国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

GestureDetector簡單使用

2019-11-06 09:47:36
字體:
來源:轉載
供稿:網友
話說onTouch也可以記錄按下抬起等簡單的手勢,但是太過簡單且考慮到生命周期等的原因,故google專門為我們提供了一個手勢類(GestureDetector)  它有兩個接口 :                   1.OnGestureListener                                                               2.SimpleOnGestureListener區別在于第一個是完整的所有手勢,第二個顧名思義就是簡單的,常用的手勢``` GestureDetector  gdt=new GestureDetector(mContext, new GestureDetector.OnGestureListener() {            @Override            public boolean onDown(MotionEvent e) {            //用戶按下屏幕就會觸發;                return false;            }            @Override            public void onShowPRess(MotionEvent e) {          //如果是按下的時間超過瞬間,而且在按下的時候沒有松開或者是拖動的,那么onShowPress就會執行            }            @Override            public boolean onSingleTapUp(MotionEvent e) {            //一次單獨的輕擊抬起操作,也就是輕擊一下屏幕,立刻抬起來,才會有這個觸發,當然,如果除了Down以外還有其它操作,那就不再算是Single操作了,所以也就不會觸發這個事件                return false;            }            @Override            public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {  //在屏幕上拖動事件。無論是用手拖動view,或者是以拋的動作滾動,都會多次觸發,這個方法        //    velocityX:X軸上的移動速度,像素/秒        //    velocityY:Y軸上的移動速度,像素/秒                  return false;            }            @Override            public void onLongPress(MotionEvent e) {           //長按            }            @Override            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {          //       滑屏,用戶按下觸摸屏、快速移動后松開         //        velocityX:X軸上的移動速度,像素/秒        //        velocityY:Y軸上的移動速度,像素/秒                   return false;            }        });```定義好上面的代碼。最后在Activity中的onTouch中將事件交給GestureDetector就可以了```public boolean onTouch(View v, MotionEvent event) {      return gdt.onTouchEvent(event);     }  ```如何在Fragment中使用GestureDetector?   思路:在Activity中創建接口,將onTouch的事件傳遞到接口的方法,調用方在實現接口并傳入自己的GestureDetector即可 1.創建接口:```    //在Activity的dispatchTouchEvent方法中將event事件傳遞給實現接口的那一方    @Override    public boolean dispatchTouchEvent(MotionEvent ev) {        for (MyOnTouchListener listener : onTouchListeners) {            listener.onTouch(ev);        }        return super.dispatchTouchEvent(ev);    }    //綁定監聽    public void registerMyOnTouchListener(MyOnTouchListener myOnTouchListener) {        onTouchListeners.add(myOnTouchListener);    }    //取消監聽    public void unregisterMyOnTouchListener(MyOnTouchListener myOnTouchListener) {        onTouchListeners.remove(myOnTouchListener);    }    public interface MyOnTouchListener {        public boolean onTouch(MotionEvent ev);    }``` 2.在Fragment中使用手勢```     /**創建手勢*/        gdt = new GestureDetector(mContext, new GestureDetector.SimpleOnGestureListener() {            @Override            public void onLongPress(MotionEvent e) {                super.onLongPress(e);                shifoushuaxing = false;            }            @Override            public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {                shifoushuaxing = true;                return true;            }        });        //實現接口        MainActivity.MyOnTouchListener myOnTouchListener = new MainActivity.MyOnTouchListener() {            @Override            public boolean onTouch(MotionEvent ev) {                boolean result = gdt.onTouchEvent(ev);                return result;            }        };        //綁定        ((MainActivity) getActivity())                .registerMyOnTouchListener(myOnTouchListener);```
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 三穗县| 南华县| 东源县| 正定县| 江陵县| 长兴县| 宽城| 通榆县| 广西| 闻喜县| 英吉沙县| 临漳县| 南江县| 祁阳县| 福安市| 南充市| 德令哈市| 德庆县| 江孜县| 宁化县| 德阳市| 曲阜市| 扎鲁特旗| 广宗县| 渝中区| 抚远县| 江口县| 东光县| 维西| 大同县| 五常市| 黄大仙区| 泸州市| 岑溪市| 涞源县| 大新县| 富源县| 徐州市| 衡东县| 遂平县| 四平市|