GestureDetector

1,触屏一刹那,触发MotionEvent事件

2,被OntouchListener 监听,在onTouch()中获取得到MotionEvent对象

3,GestureDetector转发MotionEvent对象至OnGestureListener

    GestureDetector.onTouchEvent(event);

4,OnGestureListener获取该对象,根据该对象封装的信息做出合适的反馈。

class myGestureLis ener extends SimpleOnGestureListener{

    onFling(...){

        if(e1.getX() - e2.getX()>50){

            Toash.("xxxx");

        }

    }

}
GestureDetector myGestureDetector;

class MaiActivity extends Activity{

    onCreate(...){

        myGestureDetector = new GestureDetector(new myGestureLis());

        img.setOnTouchListener(new OnTouchListener(){

            //

             onTouch(View){

                    myGestureDetector.onTouchEvent(event);

            }

        });

    }

}

or:

detector = new GestureDetector(context, new GestureDetector.OnGestureListener() {
    @Override
    public boolean onDown(MotionEvent e) {
        return false;
    }

    @Override
    public void onShowPress(MotionEvent e) {

    }

    @Override
    public boolean onSingleTapUp(MotionEvent e) {
        return false;
    }

    /** * 响应手指在屏幕上的滑动事件。 */
    @Override
    public boolean onScroll
    (MotionEvent e1, MotionEvent e2,
     float distanceX, float distanceY) {
        //移动屏幕
        System.out.println("zuobiao " + distanceX);
        /** * 移动当前view的内容 * disX表示移动Y的距离 * disY表示移动y的距离 */
        scrollBy((int) distanceX, 0);
        /** * 将当前视图的基准点移动到 某个点 上。 * x 水平方向x的坐标,y * scrollTo(x,y) */


        return false;
    }

    @Override
    public void onLongPress(MotionEvent e) {
        //长点击的时候。
    }

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        return false;
    }
});

GestureOverlayView

      <android.gesture.GestureOverlayView  android:id="@+id/gestureOverlayView" width; height; >

            <><><><>....</></></>

         <android.gesture.GestureOverlayView/>
GestureOverlayView gestureOverlayView;

class Mainactivity extends Activity{

    onCreate(...){

    gestureOverlayView = findByID(R...);

    //从资源中将手势库文件加载进来了。

    GestureLibrary library = GestureLibraries.fromRawRessource(this,R.raw.gesture);            library.load();

    gestureOverlayView.addOnGesturePerformedListener(new OnGesturePerFormedListener(){

                    @Override

                    public void onGesturePerformed(GestureOverlayVfiew overlay,Gesture gesture){

                    //读出手势库文件的内容,识别手势

                   ArrayList<Prediction> myGesture = library.recognize(gesture);

                    Prediction prediction = myGesture.get(0);

                    if(predction.score >= 5.0){

                            if(predction .name.equals("next");){

                                            //TODO 执行的操作

                             }

                    }else{

                            Toash.("没有该手势");

                    }

                }

            });

    }

}

一些常见的XML属性

Android:eventsInterceptionEnabled  

        定义当手势已经被识别出来了,是否拦截该手势的动作

Android:fadeDuration

        当用户画完, 手势效果淡出的时间

Android:fadeEnabled

        用户画完之后,手势效果淡出的时间

Android:gestureColor

        手势的颜色

Android:gestureStrokeType

        画笔的类型

Android:gestureStokeWidth

        笔画的粗细

你可能感兴趣的:(GestureDetector)