私はRelativeLayoutでビューの位置をアニメーション化しようとしました。すべてのフレームで、ビューのLayoutParamsのtopMarginを変更してから、View#setLayoutParams(newParams)を呼び出します。
残念ながら、setLayoutParams()呼び出しがビューツリー全体の再測定をトリガーするため、アニメーションは遅すぎます。
API 11以降を使用せずにこれを解決するにはどうすればよいですか?
私はRelativeLayoutでビューの位置をアニメーション化しようとしました。すべてのフレームで、ビューのLayoutParamsのtopMarginを変更してから、View#setLayoutParams(newParams)を呼び出します。
残念ながら、setLayoutParams()呼び出しがビューツリー全体の再測定をトリガーするため、アニメーションは遅すぎます。
API 11以降を使用せずにこれを解決するにはどうすればよいですか?
ビューアニメーションを使用できます。ビューの移動方法を定義する変換アニメーションを含む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);
}