开发者社区 问答 正文

java中android中onTouchEvent方法的问题

public boolean onTouchEvent(MotionEvent event)
{
    //调用warp方法根据触摸屏事件的座标点来扭曲verts数组
    warp(event.getX(), event.getY());
    return true;
}

//MotionEvent event这两个哪个是数据类型,哪个是数值
//event.getX(), event.getY() 返回的是什么值是什么数据类型?

展开
收起
蛮大人123 2016-03-23 18:13:24 2234 分享 版权
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    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)可点击时,处理触控事件.根据,按下,移动,取消,抬起,这些基本触摸事件来分别处理.
    它们其中又有很强的关联性.

    2019-07-17 19:11:39
    赞同 展开评论