咖啡伴侶

          呆在上海
          posts - 163, comments - 156, trackbacks - 0, articles - 2

          android GestureListener 手勢(shì) 多指縮放

          Posted on 2011-08-21 11:59 oathleo 閱讀(3251) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Android
          注意
          1.onDown 多指事件仍然響應(yīng)成單指
          2.onScroll滑動(dòng)時(shí)觸發(fā),e1只能獲得一個(gè)點(diǎn) ,而e2卻能獲得多點(diǎn)。(搞不清楚為什么怎么設(shè)計(jì))
          3.想在view上加 GestureListener
          可以使用下面的代碼:
          public class ViewerInnerTouchListener implements OnTouchListener {

              
          private GestureDetector gestureDetector;

              
          public ViewerInnerTouchListener(GAViewer viewer) {
                  gestureDetector 
          = new GestureDetector(new GestureListener(viewer));
              }

              
          public boolean onTouch(View v, MotionEvent event) {
                  gestureDetector.onTouchEvent(event);
                  
          return true;
              }

          }

              setOnTouchListener(
          new ViewerInnerTouchListener(this));

          判斷手勢(shì):
              public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
                  
          if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
                      Log.i(
          "onFling""onFling");
                      
          return true// Right to left
                  } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
                      
          return false// Left to right
                  }
                  
          if (e1.getY() - e2.getY() > SWIPE_MIN_DISTANCE && Math.abs(velocityY) > SWIPE_THRESHOLD_VELOCITY) {
                      
          return false// Bottom to top
                  } else if (e2.getY() - e1.getY() > SWIPE_MIN_DISTANCE && Math.abs(velocityY) > SWIPE_THRESHOLD_VELOCITY) {
                      
          return false// Top to bottom
                  }
                  
          return false;
              }


          GestureListener 的幾個(gè)方法要理解
               //Touch down時(shí)觸發(fā),不論是touch (包括long) ,scroll
               public boolean onDown(MotionEvent e) {
               return false;
               }
              
               //Touch了還沒(méi)有滑動(dòng)時(shí)觸發(fā)
               //(與onDown,onLongPress比較
               //onDown只要Touch down一定立刻觸發(fā)。
               public void onShowPress(MotionEvent e) {
               }
              
               //Touch了不移動(dòng)一直Touch down時(shí)觸發(fā)
               //Touchdown后過(guò)一會(huì)沒(méi)有滑動(dòng)先觸發(fā)onShowPress再是onLongPress。
               public void onLongPress(MotionEvent e) {
               }
              
               //上面這兩個(gè)函數(shù)都是在touch down后又沒(méi)有滑動(dòng)(onScroll),又沒(méi)有長(zhǎng)按(onLongPress),然后Touchup時(shí)觸發(fā)。
               /**
               * 點(diǎn)擊一下非常快的(不滑動(dòng))Touchup: onDown->onSingleTapUp->onSingleTapConfirmed
               *
               點(diǎn)擊一下稍微慢點(diǎn)的(不滑動(dòng))Touchup:onDown->onShowPress->onSingleTapUp->onSingleTapConfirmed
               * 點(diǎn)擊longpress ,onScroll 時(shí) 不觸發(fā) onSingleTapUp
               */
               public boolean onSingleTapUp(MotionEvent e) {
               Log.i("onSingleTapUp", "onSingleTapUp");
               return false;
               }
              
               //Touch了滑動(dòng)時(shí)觸發(fā)
               public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
               float distanceY) {
               return true;
               }
              
               //Touch了滑動(dòng)一點(diǎn)距離后,up時(shí)觸發(fā)
               public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
               float velocityY) {
               return true;
               }
          主站蜘蛛池模板: 新营市| 黑龙江省| 靖西县| 施秉县| 柳江县| 新平| 和田县| 云霄县| 阳春市| 长寿区| 基隆市| 佛学| 绥滨县| 临高县| 新泰市| 许昌市| 云浮市| 巧家县| 邢台县| 阿合奇县| 布尔津县| 马关县| 江永县| 都昌县| 河曲县| 宁化县| 二手房| 彭山县| 嘉荫县| 宁陕县| 资兴市| 隆德县| 沙雅县| 普兰店市| 合水县| 吉安县| 武宣县| 宣威市| 论坛| 洞头县| 岳阳县|