2

私はRelativeLayoutでビューの位置をアニメーション化しようとしました。すべてのフレームで、ビューのLayoutParamsのtopMarginを変更してから、View#setLayoutParams(newParams)を呼び出します。

残念ながら、setLayoutParams()呼び出しがビューツリー全体の再測定をトリガーするため、アニメーションは遅すぎます。

API 11以降を使用せずにこれを解決するにはどうすればよいですか?

4

1 に答える 1

2

ビューアニメーションを使用できます。ビューの移動方法を定義する変換アニメーションを含むxmlファイルを作成するだけです。次に、アニメーションへの参照を膨らませて呼び出します

view.startAnimation(anim);

これは、xmlファイルの変換の例です。このようなファイルをres/anim/に保存します

<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/overshoot_interpolator">

<translate android:fromXDelta="100%p" android:toXDelta="0%p" android:duration="700"/>


</set>

これを使用するためにJavaで行うことは次のとおりです。

Animation slideLeftIn;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    slideLeftIn = AnimationUtils.loadAnimation(this, R.anim.slide_left_in);
    //mView can be any View object.
    mView.startAnimation(slideLeftIn);
}
于 2012-04-16T19:43:01.147 に答える