2

我试图为 View 在 RelativeLayout 中的位置设置动画。在每一帧中,我都会更改视图的 LayoutParams 的 topMargin,然后调用 View#setLayoutParams(newParams)。

不幸的是,动画太慢了,因为 setLayoutParams() 调用触发了对整个视图树的重新测量。

如何在不使用 API 11+ 的情况下解决这个问题?

4

1 回答 1

2

您可以使用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);
}
于 2012-04-16T19:43:01.147 回答