GestureDetector

来源:互联网 发布:小强呼死你软件安卓版 编辑:程序博客网 时间:2024/06/05 10:23

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        笔画的粗细
0 0
原创粉丝点击