我正在尝试旋转一些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 = false
和clipToPadding = false
答案 0 :(得分:0)
因为当活动在其主线程上执行了很多操作时,它会跳过帧。
处理它的一种方法是在UI线程中运行动画代码。
例如:
private void setupImage(){
runOnUiThread (new Thread(new Runnable() {
public void run() {
//your code here;
}
}
}));
}
我还建议您检查资源可绘制文件中的图像大小。巨大的尺寸也可能导致跳过框架。