2012-05-12 4 views
0

私は、名前を表示するリストアビリティを使用する私の最初のアプリに取り組んでいます。ピンチズーム表示

listitemsの1つをクリックすると、テキストビューを含むxmlレイアウトを呼び出す新しいインテント(アクティビティ?)が開きます。私はtextviewsで動作するようにpinchzoomを得て実現したい(またはそれのようなもの)

今日は何

は、最終的に、私は、しかし、私は十分ではないんだけど、textviewsでそれを行うには、バージョン間で走りましたクラス全体を自分で実装することはできません。

私はこのチュートリアルを見つけたが、私はそれを使用する方法を見つけ出すように見えることはできません。 http://www.zdnet.com/blog/burnette/how-to-use-multi-touch-in-android-2-part-6-implementing-the-pinch-zoom-gesture/1847

誰もがこのコードにMyGestureDetector()で私を助けることができる:

private GestureDetector gestureDetector; 
private View.OnTouchListener gestureListener; 

そして、 inCreate:

// Zoom handlers 
gestureDetector = new GestureDetector(new MyGestureDetector()); 
gestureListener = new View.OnTouchListener() { 

    // We can be in one of these 2 states 
    static final int NONE = 0; 
    static final int ZOOM = 1; 
    int mode = NONE; 

    static final int MIN_FONT_SIZE = 10; 
    static final int MAX_FONT_SIZE = 50; 

    float oldDist = 1f; 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     TextView textView = (TextView) findViewById(R.id.text); 

     switch (event.getAction() & MotionEvent.ACTION_MASK) { 
      case MotionEvent.ACTION_POINTER_DOWN: 
       oldDist = spacing(event); 
       Log.d(TAG, "oldDist=" + oldDist); 
       if (oldDist > 10f) { 
        mode = ZOOM; 
        Log.d(TAG, "mode=ZOOM"); 
       } 
       break; 
      case MotionEvent.ACTION_POINTER_UP: 
       mode = NONE; 
       break; 
      case MotionEvent.ACTION_MOVE: 
       if (mode == ZOOM) { 
        float newDist = spacing(event); 
        // If you want to tweak font scaling, this is the place to go. 
        if (newDist > 10f) { 
         float scale = newDist/oldDist; 

         if (scale > 1) { 
          scale = 1.1f; 
         } else if (scale < 1) { 
          scale = 0.95f; 
         } 

         float currentSize = textView.getTextSize() * scale; 
         if ((currentSize < MAX_FONT_SIZE && currentSize > MIN_FONT_SIZE) 
           ||(currentSize >= MAX_FONT_SIZE && scale < 1) 
           || (currentSize <= MIN_FONT_SIZE && scale > 1)) { 
          textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, currentSize); 
         } 
        } 
       } 
       break; 
      } 
     return false; 
    } 

ありがとうございます!

答えて

0

ScaleGestureDetector(ScaleGestureDetector)を参照してください。ピンチを素早く処理し、スケールファクタ、焦点などを提供します。

関連する問題