2011-09-17 27 views
1

ズームを連続的に実装する方法を探しています。継続的に私はある位置にズームし、そこから別の位置にズームしたいということです。ブラウザのように。Android:連続ズーム機能を実装する方法

これまでのところ、私のaproachは1回のズームしか実行できず、次の前にリセットされます。

まず、指とその中間点の間の距離を計算します。

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

関連する問題