WEB开发网
开发学院手机开发Android 开发 Android多点触摸的实现 阅读

Android多点触摸的实现

 2010-09-10 00:51:00 来源:WEB开发网   
核心提示:if (numPointers == 1) { //原来只有 1 个点按下,所以现在的动作是全部按键 upaction = MotionEvent.ACTION_UP;} else { //原来有多点按下,Android多点触摸的实现(9),现在是 ACTION_POINTER_UP 动作,action = Motio

if (numPointers == 1) { //原来只有 1 个点按下,所以现在的动作是全部按键 up

action = MotionEvent.ACTION_UP;

} else { //原来有多点按下,现在是 ACTION_POINTER_UP 动作,

action = MotionEvent.ACTION_POINTER_UP

| (upOrDownPointer << MotionEvent.ACTION_POINTER_ID_SHIFT);

}

}

currentMove = null;

} else { //前后触屏 pointer 个数相同,所以是移动动作 ACTION_MOVE

action = MotionEvent.ACTION_MOVE;

}

/* 后面则是根据屏幕的 height 和 width 以及屏幕方向 orientation 对这些点进行二次处理 */

……………………………………

}

MotionEvent generateRelMotion(InputDevice device, long curTime,

long curTimeNano, int orientation, int metaState) {

/* 轨迹球等的处理方式 */

………………………………………… ..

}

void finish() { //结束这轮动作

mNextNumPointers = mAddingPointerOffset = 0;

mNextData[MotionEvent.SAMPLE_PRESSURE] = 0;

}

…………………………………… .

}

……………………………… .

……………………………………

}

第五章 接口

我们平时所看到的用2 个手指对图片放大缩小、旋转等手势都是由应用程序编写浏览器实现的。这些应用程序大多会使用 Android2.0 以上的在 MotionEvent.java 中实现的新的接口。所以,我们还需要给 MotionEvent 类补充尽量全的接口。这里可以完全参照 google 新的 android 代码。

第六章 总结

综上,在硬件支持基础上,Android1.6 如果要实现多点触摸功能,主要工作可简述为以下几个方面:

1、 驱动中,除了增加多点的事件上报方式,还要完全更改单点的事件上报方式。

2、 Android的 Frameworks 层需要修改的文件有: EventHub.cpp , RawInputEvent.java , KeyInputQueue.java , InputDevice.java , MotionEvent.java 。

3、 编写新的支持多点触摸功能的多媒体浏览器。

4、 为了代码简练,android2.0 在轨迹球和单点屏事件方式中也全使用了新的变量名,以方便多点屏事件同样能使用这些变量,所以修改时还需要注意许多细节方面。

上一页  4 5 6 7 8 9 

Tags:Android 多点 触摸

编辑录入:coldstar [复制链接] [打 印]
赞助商链接