2016年5月17日 星期二

android 一個fling onfling的例子

這裡示範的是一個在螢幕(TextView)上, 用手指快速輕撥的動作,常用於多頁面的換頁



protected SimpleOnGestureListener tvListener;

tvGesture = new GestureDetector(this.getActivity(), tvListener);


//先監測textview的OnTouchListener事件, 並call 由GestureDetector
//定義的tvGesture的onTouchEvent

textview.setOnTouchListener(new OnTouchListener() {
   @Override   public boolean onTouch(View v, MotionEvent event) {
      // 如果還沒有內容,不接受任何按鍵
      if (textview.getText().equals("")) {
         return true;
      }
      tvGesture.onTouchEvent(event);
      return false;
   }
});


//tvListener 是一個SimpleOnGestureListener,
//是GestureDetector定義tvGesture的一個constructor的參數

//onFling的程序就寫在tvListener 裡面, 這裡的fling示範的是上下滑動
tvListener = new SimpleOnGestureListener() {
    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2,
                           float velocityX, float velocityY) {

        float dX = e2.getX() - e1.getX();
        //水平移動太大時,不啟動onFling
        if (Math.abs(dX) > 50)
            return false;

//往上滑動(滑動距離大於50才啟動)
//velocityY是垂直移動速度,單位像素
        if (e1.getY() - e2.getY() > 80 && Math.abs(velocityY)>100) {
            pageNext();
//往下滑動
} else if (e1.getY() - e2.getY() < -80 Math.abs(velocityY)>100) {
            pagePre();
        }
        return true;
    }
};

  © Blogger templates Psi by Ourblogtemplates.com 2008

Back to TOP