我的问题是,我试图围绕某个点平滑地连续旋转画布。问题是,它看起来不顺利。下面是我的代码。Android帆布如何实现连续平滑运动(旋转)
rotateRunnable.run();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
rect.set(xLeft, yTop, xRight, yBottom);
paint.setColor(color);
if(rotate)
canvas.rotate(rotateAngle,CoordinateUtils.centerX,CoordinateUtils.centerY);
canvas.drawRect(rect,paint);
}
Handler handler = new Handler(Looper.getMainLooper());
Runnable rotateRunnable = new Runnable(){
public void run(){
if(rotateReverse)
rotateAngle = rotateAngle - DValues.markerSpeed;
else
rotateAngle = rotateAngle + DValues.markerSpeed;
postInvalidate(); //will trigger the onDraw
handler.postDelayed(this,1); //
}};
在线程中翻译视图是否好主意?如何实现连续的平稳运动?另外我应该在哪里检查与另一个视图对象的碰撞检测? OnDraw或其他地方?
我认为问题在于你每1毫秒调用一次'Handler',所以你只是不断地调用这个方法。相反,由于逻辑非常简单,所以最好将它移动到'onDraw()'方法。然后在视图上调用'invalidate()'。然后,所有的计算将在每个绘制周期完成。 – DeeV
谢谢你的回答,实际上我所调用的只是Viewi的无效方法罢了。你能举一个例子吗? –
另外,我应该在哪里检查碰撞检测? OnDraw或..? –