我需要使用动态旋转角度值连续旋转android imageview。我尝试使用imageview的法线角度旋转以及其他动画(objectanimator以及缓动类型),但是速度计的指针(imageview)运动中仍然存在抖动(不平滑)的情况。该旋转角度是连续且随机产生的。如何在Android中使用opengl 旋转图像视图以实现平滑移动?
答案 0 :(得分:0)
我也遇到了这个问题。原因是,如果旋转任何视图,它将触发其父视图重新缩放,并且其同级视图也是如此,这是一项非常昂贵的任务,并且会导致延迟。但是您不需要为此进入opengl级别。
#list
您只需要在Imageview绘制图像之前旋转画布即可。使用上面的RotatableImageView.java类。
然后只需调用import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
public class RotatableImageView extends android.support.v7.widget.AppCompatImageView {
private float angle = 0f;
public RotatableImageView(Context context) {
super(context);
}
public RotatableImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public RotatableImageView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public void rotate(float angle) {
this.angle = angle;
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
int save = canvas.save();
canvas.rotate(angle, canvas.getWidth() / 2, canvas.getHeight() / 2);
super.onDraw(canvas);
canvas.restoreToCount(save);
}
}
就可以解决问题。
发布了代码here