我的問題是,我試圖圍繞某個點平滑地連續旋轉畫布。問題是,它看起來不順利。下面是我的代碼。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或..? –