Android动画会跳过框架

时间:2017-07-12 12:30:26

标签: android animation

我正在尝试旋转一些ImageView(例如this),但会跳过某些帧,如图here所示。

我在做什么:我有一个带有5个ImageView的FrameLayout。 我正在旋转它们以便形成五边形。 然后,onClick(),我在X轴上再次旋转它们。 在第二个动画中,会跳过一些帧。

以下是一些代码:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    for (int i = 0; i < images.size(); i++) {
        final int angle = i * 72;

        final ImageView image = setupImage(images.get(i), angle);
        image.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(final View v) {
                image.setPivotY(0);
                image.animate().setDuration(5000).rotationX(180f);
            }
        });
    }
}

private ImageView setupImage(final ImageView image, float angle) {
    final RotateAnimation rotateAnim =
            new RotateAnimation(0.0f, angle,
                                RotateAnimation.RELATIVE_TO_SELF, 0.5f,
                                RotateAnimation.RELATIVE_TO_SELF, 1f);
    rotateAnim.setDuration(1000);
    rotateAnim.setFillAfter(true);
    image.startAnimation(rotateAnim);

    return image;
}

我还设置了clipChildren = falseclipToPadding = false

1 个答案:

答案 0 :(得分:0)

因为当活动在其主线程上执行了很多操作时,它会跳过帧。

处理它的一种方法是在UI线程中运行动画代码。

例如:

private void setupImage(){
 runOnUiThread (new Thread(new Runnable() { 
     public void run() {
         //your code here;
         }
     }
 }));

}

我还建议您检查资源可绘制文件中的图像大小。巨大的尺寸也可能导致跳过框架。