Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android GestureDetector應用

android GestureDetector應用

編輯:關於Android編程

直接上代碼了:   [java]   import android.app.Activity;   import android.os.Bundle;   import android.util.Log;   import android.view.GestureDetector;   import android.view.GestureDetector.OnGestureListener;   import android.view.MotionEvent;   import android.view.View;   import android.view.View.OnTouchListener;   import android.widget.TextView;   import android.widget.Toast;      public class GestureActivity extends Activity implements OnTouchListener,           OnGestureListener {          GestureDetector detector;          public GestureActivity() {           detector = new GestureDetector(this);       }              public void onCreate(Bundle savedInstanceState) {                 super.onCreate(savedInstanceState);                 setContentView(R.layout.main);                 TextView tv = (TextView) findViewById(R.id.TextView001);               //設置tv的******                 tv.setOnTouchListener(this);                 tv.setFocusable(true);               //必須,view才能夠處理不同於Tap(輕觸)的hold               tv.setClickable(true);                 tv.setLongClickable(true);                 detector.setIsLongpressEnabled(true);         }                       /*        * 在onTouch()方法中,我們調用GestureDetector的onTouchEvent()方法,將捕捉到的MotionEvent交給GestureDetector        * 來分析是否有合適的callback函數來處理用戶的手勢        */          public boolean onTouch(View v, MotionEvent event) {             return detector.onTouchEvent(event);         }              // 用戶輕觸觸摸屏,由1個MotionEvent ACTION_DOWN觸發         public boolean onDown(MotionEvent arg0) {             Log.i("MyGesture", "onDown");             Toast.makeText(this, "onDown", Toast.LENGTH_SHORT).show();             return true;         }                  /*        * 用戶輕觸觸摸屏,尚未松開或拖動,由一個1個MotionEvent ACTION_DOWN觸發          * 注意和onDown()的區別,強調的是沒有松開或者拖動的狀態        */         public void onShowPress(MotionEvent e) {             Log.i("MyGesture", "onShowPress");             Toast.makeText(this, "onShowPress", Toast.LENGTH_SHORT).show();         }                  // 用戶(輕觸觸摸屏後)松開,由一個1個MotionEvent ACTION_UP觸發         public boolean onSingleTapUp(MotionEvent e) {             Log.i("MyGesture", "onSingleTapUp");             Toast.makeText(this, "onSingleTapUp", Toast.LENGTH_SHORT).show();             return true;         }                  // 用戶按下觸摸屏、快速移動後松開,由1個MotionEvent ACTION_DOWN, 多個ACTION_MOVE, 1個ACTION_UP觸發         public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {             Log.i("MyGesture", "onFling");                        // 參數解釋:             // e1:第1個ACTION_DOWN MotionEvent             // e2:最後一個ACTION_MOVE MotionEvent             // velocityX:X軸上的移動速度,像素/秒             // velocityY:Y軸上的移動速度,像素/秒                      // 觸發條件 :             // X軸的坐標位移大於FLING_MIN_DISTANCE,且移動速度大於FLING_MIN_VELOCITY個像素/秒                          final int FLING_MIN_DISTANCE = 100, FLING_MIN_VELOCITY = 200;             if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE && Math.abs(velocityX) > FLING_MIN_VELOCITY) {                 // Fling left                 Log.i("MyGesture", "Fling left");                 Toast.makeText(this, "Fling Left", Toast.LENGTH_SHORT).show();             } else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE && Math.abs(velocityX) > FLING_MIN_VELOCITY) {                 // Fling right                 Log.i("MyGesture", "Fling right");                 Toast.makeText(this, "Fling Right", Toast.LENGTH_SHORT).show();             } else if(e2.getY()-e1.getY()>FLING_MIN_DISTANCE && Math.abs(velocityY)>FLING_MIN_VELOCITY) {               // Fling down                 Log.i("MyGesture", "Fling down");                 Toast.makeText(this, "Fling down", Toast.LENGTH_SHORT).show();           } else if(e1.getY()-e2.getY()>FLING_MIN_DISTANCE && Math.abs(velocityY)>FLING_MIN_VELOCITY) {               // Fling up                 Log.i("MyGesture", "Fling up");                 Toast.makeText(this, "Fling up", Toast.LENGTH_SHORT).show();           }                                   return false;                    }                  // 用戶按下觸摸屏,並拖動,由1個MotionEvent ACTION_DOWN, 多個ACTION_MOVE觸發         public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {             Log.i("MyGesture", "onScroll");             Toast.makeText(this, "onScroll", Toast.LENGTH_LONG).show();             return true;         }                  // 用戶長按觸摸屏,由多個MotionEvent ACTION_DOWN觸發         public void onLongPress(MotionEvent e) {             Log.i("MyGesture", "onLongPress");             Toast.makeText(this, "onLongPress", Toast.LENGTH_LONG).show();         }               }    
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved