Android 将按钮从活动外部移动到特定位置

Android 将按钮从活动外部移动到特定位置,android,Android,我在一个活动中有多个垂直对齐的按钮(一个在另一个下面),我希望这些按钮显示在屏幕上,就像用户在活动加载时看到它从屏幕外部(在X轴上)出现一样。我看过很多例子,但找不到真正的解决办法。如果你能提供链接或例子,那就太好了。之前,我使用了平移,但按钮从实际位置移动到外部,并返回到原始位置。我的要求是,只需将这些按钮从屏幕外部移到其原始位置即可 主活动中的代码段: button1 = (Button) findViewById(R.id.button1); button2 = (Button) find

我在一个活动中有多个垂直对齐的按钮(一个在另一个下面),我希望这些按钮显示在屏幕上,就像用户在活动加载时看到它从屏幕外部(在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/anim/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>


在这段代码中,按钮离开屏幕并回到其原始位置。我只需要让它从外部到达它的真实位置。基本上,我不确定做这件事的最佳方法是什么。

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

<?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>


如果您想通过更改按钮的左边距和上边距来自由移动按钮,那么您的布局应该是相对的,并且按钮不应该具有像“下方对齐”这样相互关联或与父按钮相关的规则

我的意思是…他到底在干什么…请大家帮个忙a有礼貌地展示你写的代码,失败的代码,你认为失败的地方,你做了什么来让它工作,后来发生了什么,是什么促使你要求“互联网”免费为你写这段代码,让我告诉您,如果您使用的是AnimatorSets等,您可能需要确保转换(在您的情况下是平移)在动画结束后保持不变。无论如何……发布您的代码,否则您将不会得到很多帮助:/谢谢,这一切都如期完成。我的下一个要求是在点击另一个按钮时将这些按钮完全移出屏幕。我尝试在动画文件中做一些小的更改。android:fromXDelta=“0%”android:toXDelta=“100%”但这会使按钮离开屏幕,然后在一瞬间,它会回到原来的位置。我能让它完全走出屏幕吗。请让我知道。您必须将此行添加到代码yourAnimationName.setFillAfter(true);