2011-08-16 6 views
0

ピンチズーム機能の「実装」のための独自のコードを作成しましたが、それは機能しますが、ユーザーフレンドリーではありません。頻繁に非常に散発的で、一般的にはあまり綺麗ではありません。あなたの誰かが私を助けてくれるかどうか、多分簡単な方法か別のアプローチかと思っていました。おそらくGestureListenerを使用して私はそれを使用する方法はわかりません。どんな助けでも感謝します。以下はAndroidスムーザーピンチズーム?

は私の現在のコードです:

public boolean onTouchEvent(MotionEvent event) { 
     float cr, cr2 = 0.0f; 
     cx = new float[2]; 
     cy = new float[2]; 
     float zx; 
     final int action = event.getAction(); 
     switch (action) { 
     case MotionEvent.ACTION_DOWN: { 
      break; 
     } 
     case MotionEvent.ACTION_POINTER_DOWN: { 
      break; 
      } 
     case MotionEvent.ACTION_MOVE: { 
      for (int i = 0; i<event.getPointerCount(); i++) { 
      if (run == true) { //see if it is the first time running program and set orig to the scale/screen res 
      Orig = scale * 800; //800 = screen res 
      } 
      cx[i] = event.getX(i); //get x and y for each finger 
      cy[i] = event.getY(i); 

      cr = (cx[0] - cx[1])*(cx[0] - cx[1]) + (cy[0] - cy[1])*(cy[0] - cy[1]); //get the distance between pointers 
      cr2 = FloatMath.sqrt(cr); 

      if (run == true) { 
      scale = cr2/800; 
      run = false; 
      } 
      else { 
       if (scale >= 550.0f) { 
        scale = 1.0f; 
       } 
       if (scale <= 0.0f) { 
        scale = 1.0f; 
       } 
       nScale = Orig/cr2; 
       scale = nScale * 0.5f; 

      } 
      }} 

これはおそらくすべてでこれを行うための最善の方法ではありません。いくつかのイベントで平均を取るとより良い回答が得られますか?

おかげ

答えて

関連する問題