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

首頁 > 系統 > Android > 正文

Android GestureDetector手勢滑動使用實例講解

2019-12-12 05:50:37
字體:
來源:轉載
供稿:網友

Gesture在 ViewGroup中使用

GestureDetector類可以讓我們快速的處理手勢事件,如點擊,滑動等。
使用GestureDetector分三步:
1. 定義GestureDetector類
2. 初始化手勢類,同時設置手勢監聽
3. 將touch事件交給gesture處理

先來了解一下如何使用,后面會有示例:

package com.example.y2222.myview;import android.content.Context;import android.util.AttributeSet;import android.util.Log;import android.view.GestureDetector;import android.view.MotionEvent;import android.widget.LinearLayout;/** * Created by raise.yang on 2016/06/29. */public class GestureDemoView extends LinearLayout { //1,定義GestureDetector類 private GestureDetector m_gestureDetector; public GestureDemoView(Context context, AttributeSet attrs) {  this(context, attrs, 0); } public GestureDemoView(Context context, AttributeSet attrs, int defStyleAttr) {  super(context, attrs, defStyleAttr);  //設置為可點擊  setClickable(true);  //2,初始化手勢類,同時設置手勢監聽  m_gestureDetector = new GestureDetector(context, onGestureListener);  //雙擊監聽-一般很少用到  m_gestureDetector.setOnDoubleTapListener(onDoubleTapListener); } @Override public boolean onTouchEvent(MotionEvent event) {  //3,將touch事件交給gesture處理  m_gestureDetector.onTouchEvent(event);  return super.onTouchEvent(event); } //初始化手勢監聽對象,使用GestureDetector.OnGestureListener的實現抽象類,因為實際開發中好多方法用不上 private final GestureDetector.OnGestureListener onGestureListener = new GestureDetector.SimpleOnGestureListener() {  @Override  public boolean onSingleTapUp(MotionEvent e) {   Log.d("GestureDemoView", "onSingleTapUp() ");   return super.onSingleTapUp(e);  }  @Override  public void onLongPress(MotionEvent e) {   Log.d("GestureDemoView", "onLongPress() ");   super.onLongPress(e);  }  @Override  public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {   Log.d("GestureDemoView", "onScroll() distanceX = " + distanceX);   return super.onScroll(e1, e2, distanceX, distanceY);  }  @Override  public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {   Log.d("GestureDemoView", "onFling() velocityX = " + velocityX);   return super.onFling(e1, e2, velocityX, velocityY);  }  @Override  public void onShowPress(MotionEvent e) {   Log.d("GestureDemoView", "onShowPress() ");   super.onShowPress(e);  }  @Override  public boolean onDown(MotionEvent e) {   Log.d("GestureDemoView", "onDown() ");   return super.onDown(e);  }  @Override  public boolean onDoubleTap(MotionEvent e) {   Log.d("GestureDemoView", "onDoubleTap() ");   return super.onDoubleTap(e);  }  @Override  public boolean onDoubleTapEvent(MotionEvent e) {   Log.d("GestureDemoView", "onDoubleTapEvent() ");   return super.onDoubleTapEvent(e);  }  @Override  public boolean onSingleTapConfirmed(MotionEvent e) {   Log.d("GestureDemoView", "onSingleTapConfirmed() ");   return super.onSingleTapConfirmed(e);  }  @Override  public boolean onContextClick(MotionEvent e) {   Log.d("GestureDemoView", "onContextClick() ");   return super.onContextClick(e);  } }; private final GestureDetector.OnDoubleTapListener onDoubleTapListener = new GestureDetector.OnDoubleTapListener() {  @Override  public boolean onSingleTapConfirmed(MotionEvent e) {   Log.d("GestureDemoView", "onSingleTapConfirmed() OnDoubleTapListener");   return false;  }  @Override  public boolean onDoubleTap(MotionEvent e) {   Log.d("GestureDemoView", "onDoubleTap() OnDoubleTapListener");   return false;  }  @Override  public boolean onDoubleTapEvent(MotionEvent e) {   Log.d("GestureDemoView", "onDoubleTapEvent() OnDoubleTapListener");   return false;  } };}

注意:setClickable(true);一定要加,不然只會收到下例3個事件,被這個整了好長時間才找到原因.(⊙

主站蜘蛛池模板: 松溪县| 深泽县| 遂平县| 泰顺县| 沙田区| 肥西县| 汾西县| 泊头市| 于都县| 临沂市| 五原县| 通榆县| 伽师县| 博爱县| 土默特右旗| 大悟县| 铜山县| 怀来县| 徐州市| 建阳市| 通榆县| 奉新县| 修文县| 襄城县| 城口县| 云霄县| 永和县| 花垣县| 泰和县| 陆丰市| 阜南县| 海晏县| 德兴市| 麦盖提县| 岳阳市| 壶关县| 沧源| 临沧市| 皋兰县| 赤壁市| 阜城县|