2011-09-17 52 views
1

我正在尋找一種實現連續縮放的方式。連續我的意思是我想放大到一個位置並從那裏放大到另一個位置等等。就像在瀏覽器中一樣。Android:如何實現連續縮放功能

到目前爲止,我的意見只能夠一次性縮放並在下一次之前重置。

首先我計算手指和中間點之間的距離。

public boolean onTouchEvent(MotionEvent event) { 

if(mode == ZOOM) { 
    float newDist = spacing(event); 
    scale = newDist/oldDist; 
    midPoint(midPoint, event); 
    invalidate(); 
} 

該方法invalidate調用onDraw,我告訴矩陣做縮放。

protected void onDraw(Canvas canvas) { 

    matrix = canvas.getMatrix(); 
    matrix.postScale(scale, scale, midPoint.x, midPoint.y); 
    canvas.setMatrix(matrix); 

    // drawing code 
} 

有沒有更好的積累aproach?

回答

0

如果您想要動畫縮放,您必須計算定時器中的動畫。這意味着隨着時間的推移,您可以從一個矩陣轉換爲另一個矩陣,使視圖無效,並將結果矩陣應用於onDraw。 這種方式可以從一個縮放級別平滑過渡到另一個縮放級別。

+0

不,我不想有動畫。我的問題是關於觸摸事件。縮放以一個觸摸手勢停止,應該繼續下一個不同的點,但繼續使用最後一個縮放級別,就像在PDF查看器中一樣。 – strangeoptics