码迷,mamicode.com
首页 > 其他好文 > 详细

GestureDetector

时间:2016-05-07 09:02:50      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:

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

标签:

原文地址:http://blog.csdn.net/xs15073722800/article/details/51331324

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!