私はこのように2つのビューを持っていますRelativeLayout
:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<View
android:id="@+id/view1"
android:layout_width="match_parent"
android:layout_height="200dp"
android:background="@drawable/shape_red"/>
<View
android:id="@+id/view2"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_below="@id/view1"
android:background="@drawable/shape_blue"/>
</RelativeLayout>
ここで、yプロパティをview1
0から300までアニメートします。ただし、が下(レイアウト-下)に設定されているため、-view2
に従って位置を変更したいと思います。view1
view2
view1
onAnimationEnd
これが機能していないので、アニメーションにリスナーを追加しようとしました。このような:
ObjectAnimator ani = ObjectAnimator.ofFloat(view1, "Y", 200);
ani.setDuration(2000);
ani.addListener(new AnimatorListenerAdapter()
{
@Override
public void onAnimationEnd(Animator animation)
{
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, view2.getHeight());
params.addRule(RelativeLayout.BELOW, view1.getId());
view2.setLayoutParams(params);
}
});
しかしview2
、その位置はまったく変わりませんでした。
できれば新しいアニメーションをview2
作らないようにしたいので、わざわざ提案しないでください。;)
誰か提案がありますか?