【安卓】安卓App开发思路 一步一个脚印(五)多点触碰与单点触碰的冲突处理思路

来源:互联网 发布:轻量级linux安装详解 编辑:程序博客网 时间:2024/06/05 05:01

多点触碰与单点触碰的冲突处理思路


与我思路大致相同的博文  http://blog.csdn.net/q610098308/article/details/51324244
原理可以看他的博文
float startX = 0;int state = 0;//防止手指移动反复更新 只在手指按下和滑动时 启动float endX;int mode = 0;@Overridepublic boolean onTouch(View arg0, MotionEvent event) {    //为了防止多点的触碰影响到单点的滑动 因此在多点触碰条件中处理    switch (event.getAction() & event.ACTION_MASK)    {        case MotionEvent.ACTION_DOWN:           // 第一个手指按下事件            mode =0;            startX = event.getX();            state = 1;            break;        case MotionEvent.ACTION_UP:        case MotionEvent.ACTION_POINTER_UP:        // 手指放开事件            mode = 0;            endX = event.getX();            float endY = event.getY();            state = 0;            //TODO something
            endX = 0;//回归0            break;        case MotionEvent.ACTION_MOVE:            if(mode == 0)// 是一个手指拖动            {                if (state == 1) {                    endX = event.getX();                    float changeXDistance = (float)((endX - startX) / 1.3);//计算误差                    //两点坐标的距离绝对值                    if (Math.abs(changeXDistance) > 100) {                                              //TODO something                        startX = endX;                        state=0;                    }                }            }else if (mode ==1) // 两个手指滑动            {            }            break;        case MotionEvent.ACTION_POINTER_DOWN: // 第二个手指按下事件            mode = 1;            break;    }    return true;}


0 0