有谁知道NEWTAP nt-24nt检查是什么么的吗?求入手过的大神分享!

版权声明:本文为博主原创文章未经博主允许不得转载。 /lmj/article/details/

一直想写事件分发机制的文章不管咋样,也得自己研究下事件分发的源码写出心得~

首先我们先写个简单的唎子来测试View的事件转发的流程~

为了更好的研究View的事件转发,我们自定以一个MyButton继承Button然后把跟事件传播有关的方法进行复写,然后添加上日誌~

下面我们运行然后点击按钮,查看日志输出:

我有意点击的时候蹭了一下不然不会触发MOVE,手抖可能会打印一堆MOVE的日志~~~

好了可以看箌,不管是DOWNMOVE,UP都会按照下面的顺序执行:

下面就跟随日志的脚步开始源码的探索~

10-15行如果当前View是Disabled状态且是可点击则会消费掉事件(return true);可以忽略,不是我们的重点;

17-21行如果设置了mTouchDelegate,则会将事件交给代理者处理直接return true,如果大家希望自己的View增加它的touch范围可以尝试使用TouchDelegate,这里吔不是重点可以忽略;

接下来到我们的重点了:

23行的判断:如果我们的View可以点击或者可以长按,则注意IF的范围,最终一定return true ;

在run方法里面取消mPrivateFlags的PREPRESSED然后设置PRESSED标识,刷新背景如果View支持长按事件,则再发一个延时消息检测长按;

}可以看到,当用户按下首先会设置标识为PREPRESSED

-115ms),这个115ms刚好时检测额PREPRESSED时间;也就是用户从DOWN触发开始算起如果500ms内没有抬起则认为触发了长按事件:

1、如果此时设置了长按的回调,则执行長按时的回调且如果长按的回调返回true;才把mHasPerformedLongPress置为ture;

87-88行:拿到当前触摸的x,y坐标;

91行判断当然触摸点有没有移出我们的View,如果移出了:

}这个是迻除DOWN触发时设置的PREPRESSED的检测;即当前触发时机在DOWN触发不到115ms时,你就已经移出控件外了;

如果115ms后你才移出控件外,则你的当前mPrivateFlags一定为PRESSED且发送了长按的检测;

好了MOVE我们也分析完成了,总结一下:只要用户移出了我们的控件:则将mPrivateFlags取出PRESSED标识且移除所有在DOWN中设置的检测,长按等;

28行:如果包含PRESSED或者PREPRESSED则进入执行体也就是无论是115ms内或者之后抬起都会进入执行体。

终于执行了我们的click事件了下面看一下performClick()方法:

别激動,还没结束回到ACTION_UP,

好了代码跨度还是相当大的,下面需要总结下:

1、整个View的事件转发流程是:

b、如果115ms内没有触发UP则将标志置为PRESSED,清除PREPRESSED标志同时发出一个延时为500-115ms的,检测长按任务消息;

主要就是检测用户是否划出控件如果划出了:

b、如果是115ms-500ms间,即长按还未发生則首先移除长按检测,执行onClick回调;

c、如果是500ms以后那么有两种情况:

点击事件OnClick事件依然可以触发;

最后问个问题,然后再运行个例子结束:


最后本篇博文完成了对View的事件分发机制的整个流程的说明,并且对源码进行了分析;

当然了View结束,肯定到我们的ViewGroup了请点击:

}

自主研发金属网格技术120Hz 触控采樣率,触控操作十分灵敏跟手

具备全功能 USB-C 接口,一线连接 TNT 解决所有需求同时还能为手机充电(15W)。

从此告别 Dock 扩展坞以及繁杂的各种桌面连线。

显示器设置菜单为触控方式支持在多设备间进行快速切换。

整体设计风格十分电竞支架能够在 30°-90° 之间自由调节。

内置双聲道音箱左侧有一个 3.5mm 耳机孔和两个 USB-A 接口。

除了全功能 C 口外还提供 HDMI + DP 视频接口。

有红黑和纯黑两种配色众筹价格 2399 元。

目前众筹已经成功於 10 月 26 日结束后续会以零售价格登录电商平台。

}

360问答 - 你问大家答

  • 还没有选出最佳答案请稍候访问或查看其他回答!

}

我要回帖

更多关于 nt检查是什么 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信