如何使用连续动态旋转角度值在Android中使用opengl旋转imageview

时间:2018-08-20 07:08:40

标签: android android-studio opengl-es opengl-es-2.0

我需要使用动态旋转角度值连续旋转android imageview。我尝试使用imageview的法线角度旋转以及其他动画(objectanimator以及缓动类型),但是速度计的指针(imageview)运动中仍然存在抖动(不平滑)的情况。该旋转角度是连续且随机产生的。如何在Android中使用opengl 旋转图像视图以实现平滑移动?

1 个答案:

答案 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