2017-07-01 81 views
-2

我在活动中有多个垂直对齐的按钮(一个在另一个之下),我希望这些按钮出现在屏幕上,就好像用户看到它来自屏幕外部一样(在X轴上)。我经历了很多例子,但找不到真正的解决方案。如果您可以提供链接或示例,那就太棒了。早些时候,我使用翻译,但按钮从其真实位置移动到外部并返回到其原始位置。我的要求是只需要将这些按钮从屏幕外部移动到原始位置。将按钮从活动外部移动到特定位置

片段中的主要活动:

button1 = (Button) findViewById(R.id.button1); 
button2 = (Button) findViewById(R.id.button2); 
button3 = (Button) findViewById(R.id.button3); 
button4 = (Button) findViewById(R.id.button4); 

buttonAnimation = AnimationUtils.loadAnimation(this, 
R.anim.button_animation); 

button1.setAnimation(buttonAnimation); 
button2.setAnimation(buttonAnimation); 
button3.setAnimation(buttonAnimation); 
button4.setAnimation(buttonAnimation); 

RES /动画/ button_animation.xml:

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate 
     android:fromXDelta="0" 
     android:toXDelta="100%p" 
     android:duration="500" 
     android:repeatCount="1" 
     android:repeatMode="reverse" > 
    </translate> 
</set> 

在该代码中,该按钮被外出屏幕的和未来的其原始位置。我需要让这只来自外部的其真实的位置。基本上,我不确定什么是最好的方法来做到这一点。

+0

我的意思是......他为什么......请大家帮个忙,让他们看看你写的代码,失败的代码,你认为失败的地方,你已经做了什么努力使它工作,之后发生了什么,以及是什么促使你问“互联网”为你编写这段代码......免费,让我告诉你,如果你使用AnimatorSets等,你可能需要确保转换(在你的翻译案例)*在动画结束后停留*。无论如何...发布你的代码或者你不会得到很多帮助:/ –

回答

0

使用此动画。只调整项目中的值。注意按钮的第一个位置必须是动画后的最终位置。

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate 
     android:interpolator="@android:anim/linear_interpolator" 
     android:duration="500" 
     android:fromXDelta="100%" 
     android:toXDelta="0%" > 
    </translate> 
</set> 
+0

谢谢,这按预期工作。我的下一个要求是在另一个按钮单击时将这些按钮完全移出屏幕。我尝试了动画文件中的小改动。 android:fromXDelta =“0%” android:toXDelta =“100%” 但是这会让按钮离开屏幕,然后在一瞬间,它会回到原来的位置。我可以让它完全走出屏幕吗?请告诉我。 – Priyabrata

+0

您必须将此行添加到您的代码中yourAnimationName.setFillAfter(true); –

0

如果你想通过改变他们的左边和顶部页边距布局应该是一个RelativeLayout的和按钮不应该有像“align_below”是相互关联或父规则自由移动的按钮。