我试图为 View 在 RelativeLayout 中的位置设置动画。在每一帧中,我都会更改视图的 LayoutParams 的 topMargin,然后调用 View#setLayoutParams(newParams)。
不幸的是,动画太慢了,因为 setLayoutParams() 调用触发了对整个视图树的重新测量。
如何在不使用 API 11+ 的情况下解决这个问题?
我试图为 View 在 RelativeLayout 中的位置设置动画。在每一帧中,我都会更改视图的 LayoutParams 的 topMargin,然后调用 View#setLayoutParams(newParams)。
不幸的是,动画太慢了,因为 setLayoutParams() 调用触发了对整个视图树的重新测量。
如何在不使用 API 11+ 的情况下解决这个问题?
您可以使用View Animations只需将自己制作一个带有翻译动画的 xml 文件,该文件定义您希望 View 如何移动。然后膨胀对您的动画的引用并调用
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);
}