动画在相对布局中定位Android的其他视图

时间:2011-08-01 03:41:29

标签: java android layout animation

我的动画有问题,这是我的代码:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    new Handler().postDelayed(new Runnable(){

        @Override
        public void run() {
            Animation anim= new TranslateAnimation(0, 0, 0, -200);
            anim.setDuration(2000);
            anim.setFillAfter(true);
            findViewById(R.id.button1).startAnimation(anim);

        }

    }, 2000);
}

主要布局是:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

<Button 
    android:id="@+id/button1" 
    android:layout_width="fill_parent" 
    android:text="Button" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:minHeight="120sp"/>

<Button 
    android:id="@+id/button2" 
    android:layout_width="fill_parent" 
    android:text="Button" 
    android:layout_height="fill_parent" 
    android:layout_below="@id/button1" 
    android:minHeight="120sp"/>

</RelativeLayout>

我希望button2与button1一起移动。我知道我可以对两个按钮应用相同的动画并且它们一起移动但是按钮2将移动到底部边缘。

有人知道我该如何解决它?

2 个答案:

答案 0 :(得分:2)

我不确定你真正想要达到的目标。我猜你想在动画结束后将button2保留在布局的顶部。我是对的吗?

据我所知,在Android中,视图在动画其他视图时不会重新定位。在将视图的可见性设置为GONE时,它们会重新定位。

因此你可以:

  1. 将另一个动画应用于button2,以便将其移动到您想要的位置。
  2. 将button1的可见性设置为在动画之后消失:

    button1.setVisibility( View.GONE );
    

答案 1 :(得分:2)

首先,Android动画不会影响布局。你的按钮没有真的移动,它只是看起来像。

其次,如果您希望两个按钮一起移动,请将它们放在线性布局中并为其设置动画。