public boolean onTouchEvent(MotionEvent event)
{
//调用warp方法根据触摸屏事件的座标点来扭曲verts数组
warp(event.getX(), event.getY());
return true;
}
//MotionEvent event这两个哪个是数据类型,哪个是数值
//event.getX(), event.getY() 返回的是什么值是什么数据类型?
第一个是参数的数据类型,第二个是具体的参数名称,这个就是简单的方法声明的语法呀。
View#onTouchEvent方法主要做了如下处理:
(1) 如果此view被禁用了. (如果是触碰完成事件则设置按下状态),然后返回是否可点击.
(中间的注释的意思为:一个可点击的View虽然禁用了,但是还是要把事件消耗掉,只是不响应它们而已.
if ((viewFlags & ENABLED_MASK) == DISABLED) {
if (event.getAction() == MotionEvent.ACTION_UP && (mPrivateFlags & PFLAG_PRESSED) != 0) {
setPressed(false);
}
// A disabled view that is clickable still consumes the touch
// events, it just doesn't respond to them.
return (((viewFlags & CLICKABLE) == CLICKABLE ||
(viewFlags & LONG_CLICKABLE) == LONG_CLICKABLE));
}
(2) 如果此View有触碰事件处理代理,那么将此事件交给代理处理:
if (mTouchDelegate != null) {
if (mTouchDelegate.onTouchEvent(event)) {
return true;
}
}
(3)如果不可点击(既不能单击,也不能长按)则直接返回.false
(4)可点击时,处理触控事件.根据,按下,移动,取消,抬起,这些基本触摸事件来分别处理.
它们其中又有很强的关联性.
第一个是数据类型,第二个是数值,返回的是点击的坐标