您的位置:首页 > 移动开发 > Android开发

Android 多点触控实践解析及加入MotionEvent.ACTION_MASK的原因

2015-04-09 10:36 417 查看
    Activity中的onTouchEvent(MotionEvent
event);

    Override onTouchEvent(...)为以下形式:

    onTouchEvent(MotionEvent event){

          return super.onTouchEvent(event);

    }

    默认的情况下super.onTouchEvent(...)返回false,所以只有一个触摸点被传送。当把return的值改成true的时候,系统在得到true指令后,获得触摸点的监听器并没有被置失效,多点触控就得以实现了。当把值改为true之后,在方法内加个输出语句标记一下,可以看见event在多点触控的情况下,提取event内触碰点个数,会有有相应改变。不断得到屏幕事件的各种值,通过switch语句的筛选,就可以得到屏幕受到的触摸的情况。下面贴代码。其实跟GestureDetector常用方法差不多。

import android.view.MotionEvent;

public class CMultiTouchManager {

    private OnCMultiTouchListener cOnCMultiTouchListener = null;

    public CMultiTouchManager(){}

    public void setOnCMultiTouchListener(OnCMultiTouchListener listener){

        if (listener == null) {

            throw new IllegalStateException("Listener could be null !");

        }

        this.cOnCMultiTouchListener=listener;

    }

    public CMultiTouchManager(OnCMultiTouchListener listener) {

        if (listener == null) {

            throw new IllegalStateException("Listener could be null !");

        }

        this.cOnCMultiTouchListener = listener;

    }

    public void putTouchEvent(MotionEvent event) {

        switch (event.getAction() & MotionEvent.ACTION_MASK) {

        case MotionEvent.ACTION_DOWN:

            CMultiTouchManager.this.cOnCMultiTouchListener.onDown(

                    event.getPointerId(event.getPointerCount() - 1),

                    event.getX(), event.getY());

            break;

        case MotionEvent.ACTION_POINTER_DOWN:

            CMultiTouchManager.this.cOnCMultiTouchListener.onDown(

                    event.getPointerId(event.getPointerCount() - 1),

                    event.getX(), event.getY());

            break;

        case MotionEvent.ACTION_UP:

            CMultiTouchManager.this.cOnCMultiTouchListener.onUp(

                    event.getPointerId(event.getPointerCount() - 1),

               
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: