试图将按钮移动到屏幕上的另一个点

时间:2011-10-30 21:51:30

标签: android android-animation

我试图相对于他们的起点移动3个按钮:

启动动画的代码是:

protected void showMoreBtns() {
    Button btn1 = (Button)this.findViewById( R.id.more1btn );
    Button btn2 = (Button)this.findViewById( R.id.more2btn );
    Button btn3 = (Button)this.findViewById( R.id.more3btn );

    Animation showMore = AnimationUtils.loadAnimation( this, R.anim.optionsinup1 );
    btn1.startAnimation( showMore );

    showMore = AnimationUtils.loadAnimation( this, R.anim.optionsinup2 );
    btn2.startAnimation( showMore );

    showMore = AnimationUtils.loadAnimation( this, R.anim.optioninup3 );
    btn3.startAnimation( showMore );
}

动画定​​义为:

<?xml version="1.0" encoding="utf-8"?>
<set
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:fromXDelta="0"
        android:fromYDelta="0"
        android:toXDelta="-60"
        android:toYDelta="-30" />
</set>

所有三种动画都采用相同的格式,只修改android:toDelta

问题是动画运行,但按钮在动画结束时返回到原始位置。我希望他们留在终点。

3 个答案:

答案 0 :(得分:2)

showMore.setFillAfter(真); 这将放在您的Java代码中。 我希望它会起作用。如果你想在完成动画后使用按钮,你将放置onAnimationEnd(动画动画),使用你的布局放置按钮。

答案 1 :(得分:1)

您需要两组按钮,在播放动画后,您必须使一组消失,可能在其父级或每个按钮上使用View.setVisibility(View.GONE)

答案 2 :(得分:1)

不确定这是否会对您有所帮助,但我对使用这些方法能够做到的同样问题感到震惊, setTranslationX(浮点) setTranslationY(浮点)

你可以像这样使用它

Button button = (button) findViewById(your id); 
button.setTranslationX(a float value);

这里提供了更多信息的android文档 http://developer.android.com/reference/android/view/View.html#attr_android:translationX

另请注意,所需的android SDK最低级别为11