android--監聽左右滑動事件

主要思路:activity實現OnTouchListener接口,繼承方法,GestureDetector.SimpleOnGestureListener的一個對象,用來識別各種手勢動作,源碼中SimpleOnGestureListener實現的是OnGestureListener, OnDoubleTapListener這兩個接口,如果你只是做檢測左右滑動可以去只實現OnGestureListener,然後覆蓋public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)方法。

public class fgMeterActivity extends Activity implements View.OnTouchListener{
	private static final int FLING_MIN_DISTANCE = 50;
    private static final int FLING_MIN_VELOCITY = 0;
	
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_meter);

        ButterKnife.bind(this);

        mGestureDetector = new GestureDetector(this, myGestureListener);
        ScrollView scrollView = findViewById(R.id.sc);//佈局的主容器
        scrollView.setOnTouchListener(this);
        scrollView.setLongClickable(true);//必需設置這爲true 否則也監聽不到手勢
    }
	
	@Override
    public boolean onTouch(View v, MotionEvent event) {
        // TODO Auto-generated method stub
        return mGestureDetector.onTouchEvent(event);
    }
	
	GestureDetector.SimpleOnGestureListener myGestureListener = new GestureDetector.SimpleOnGestureListener(){
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {

            Log.e(TAG, "開始滑動");
            float x = e1.getX()-e2.getX();
            float x2 = e2.getX()-e1.getX();
            if(x > FLING_MIN_DISTANCE && Math.abs(velocityX) > FLING_MIN_VELOCITY){
                Log.i(TAG,"向左手勢");

            }else if(x2 > FLING_MIN_DISTANCE && Math.abs(velocityX) > FLING_MIN_VELOCITY){
                Log.i(TAG,"向右手勢");

            }

            return false;
        };
    };
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章