当前位置: 首页 > news >正文

网站建设所需要的技术搜索广告是什么意思

网站建设所需要的技术,搜索广告是什么意思,seo自然排名,泰州网站制作Android事件源码分析: Android事件传递(一):Activity、View、ViewGroup及dispatchtouchEvent、onTouchEvent梳理 Android事件传递(二):事件动作 DOWN 在Activity、View、ViewGroup传递 Android事件传递(三):事件动作 UP 在Acti…

Android事件源码分析:

Android事件传递(一):Activity、View、ViewGroup及dispatchtouchEvent、onTouchEvent梳理

Android事件传递(二):事件动作 DOWN 在Activity、View、ViewGroup传递

Android事件传递(三):事件动作 UP 在Activity、View、ViewGroup传递

Android事件传递(四):总结篇

 

偶尔看到一个问答:https://ask.csdn.net/questions/246798,为什么onTouchEvent方法会在dispatchTouchEvent方法之前执行呢?就跟了一下源码重新看了一下Android的事件传递流程

回答如下:

 public class MyButton extends Button {。。。。。省略代码。。。。。。@Overridepublic boolean dispatchTouchEvent(MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:Log.d("TTTT", "context:" + mContext + "MyButton|dispatchTouchEvent|return:" + super.dispatchTouchEvent(event) + "|event:DOWN");break;case MotionEvent.ACTION_MOVE:Log.d("TTTT", "context:" + mContext + "MyButton|dispatchTouchEvent|return:" + super.dispatchTouchEvent(event) + "|event:MOVE");break;case MotionEvent.ACTION_UP:Log.d("TTTT", "context:" + mContext + "MyButton|dispatchTouchEvent|return:" + super.dispatchTouchEvent(event) + "|event:UP");break;}Log.d("TTTT", "========================== ");return super.dispatchTouchEvent(event);}。。。。。省略代码。。。。。。
}

onTouchEvent方法会在dispatchTouchEvent方法之前执行是因为你在打印日志的时候调用了super.super.dispatchTouchEvent(event)

即在DOWN和UP打印日志的代码:

 Log.d("TTTT", "context:" + mContext + "MyButton|dispatchTouchEvent|return:" + super.dispatchTouchEvent(event) + "|event:DOWN");Log.d("TTTT", "context:" + mContext + "MyButton|dispatchTouchEvent|return:" + super.dispatchTouchEvent(event) + "|event:UP");

这时候会调用MyButton的父类View的dispatchTouchEvent方法

 public boolean dispatchTouchEvent(MotionEvent event) {// If the event should be handled by accessibility focus first.if (event.isTargetAccessibilityFocus()) {// We don't have focus or no virtual descendant has it, do not handle the event.if (!isAccessibilityFocusedViewOrHost()) {return false;}// We have focus and got the event, then use normal event dispatch.event.setTargetAccessibilityFocus(false);}boolean result = false;if (mInputEventConsistencyVerifier != null) {mInputEventConsistencyVerifier.onTouchEvent(event, 0);}final int actionMasked = event.getActionMasked();if (actionMasked == MotionEvent.ACTION_DOWN) {// Defensive cleanup for new gesturestopNestedScroll();}if (onFilterTouchEventForSecurity(event)) {if ((mViewFlags & ENABLED_MASK) == ENABLED && handleScrollBarDragging(event)) {result = true;}//noinspection SimplifiableIfStatementListenerInfo li = mListenerInfo;if (li != null && li.mOnTouchListener != null&& (mViewFlags & ENABLED_MASK) == ENABLED&& li.mOnTouchListener.onTouch(this, event)) {result = true;}if (!result && onTouchEvent(event)) {result = true;}}if (!result && mInputEventConsistencyVerifier != null) {mInputEventConsistencyVerifier.onUnhandledEvent(event, 0);}// Clean up after nested scrolls if this is the end of a gesture;// also cancel it if we tried an ACTION_DOWN but we didn't want the rest// of the gesture.if (actionMasked == MotionEvent.ACTION_UP ||actionMasked == MotionEvent.ACTION_CANCEL ||(actionMasked == MotionEvent.ACTION_DOWN && !result)) {stopNestedScroll();}return result;}

 这个时候就调用了MyButton的onTouchEvent方法会先打印 onTouchEvent的日志 

然后再打印 dispatchTouchEvent 日志,在MyButton#dispatchTouchEvent 最后又return super.dispatchTouchEvent(event);

这时又会调用MyButton的onTouchEvent再打印一次 onTouchEvent的日志 

最终得日志就变成了

 03-31 11:51:08.493: D/TTTT(1609): context:com.example.testtouchevent.MainActivity@528486ecMyButton|onTouchEvent|return:true|event:DOWN
03-31 11:51:08.493: D/TTTT(1609): context:com.example.testtouchevent.MainActivity@528486ecMyButton|dispatchTouchEvent|return:true|event:DOWN
03-31 11:51:08.493: D/TTTT(1609): ========================== 
03-31 11:51:08.493: D/TTTT(1609): context:com.example.testtouchevent.MainActivity@528486ecMyButton|onTouchEvent|return:true|event:DOWN

 

http://www.lbrq.cn/news/2546857.html

相关文章:

  • 做运动鞋的网站视频百度推广怎么做免费
  • 自己优化网站网站策划方案案例
  • 微信的微网站模板如何推广seo
  • 查公司信息的网站益阳网站seo
  • 婚庆公司网站建设策划书重庆seo网站建设
  • 澳门网站建设公司哪家好营销策划公司取名大全
  • 集成微信的企业网站管理系统中国十大品牌策划公司
  • 俄语网站模板南宁网站推广营销
  • 我有域名跟空间能教我做网站吗互联网推广引流
  • 建设个人网站荥阳seo
  • 中国做外贸网站有哪些网站定制
  • 手机咋做网站seo站长网
  • wordpress主题手机版seo排名优化有哪些
  • 做服装店网站的素材app开发
  • 高端网站设计制作软文标题例子
  • 哪里可以兼职答题免费关键词优化工具
  • 桥西网站建设网络营销主要学什么
  • 跨境电商网站开发文档杭州网站设计
  • 城乡建设部统计信息网站想要网站导航推广页
  • 石家庄市建设局质监站网站百度地图轨迹导航
  • 黑龙江住房建设部网站网页设计与制作软件有哪些
  • 做网站要先买域名吗腾讯企点app
  • 建设银行手机银行官方网站下载安装360网址导航
  • 专门做淘宝代运营的网站北京今日重大新闻
  • 网址浏览器潍坊网站seo
  • 吴镇宇做的电影教学网站站长工具查询域名
  • intitle:律师网站建设的重要性数据分析培训机构哪家好
  • 百度做网站引流打开网址跳转到国外网站
  • 广州公司营销型网站建设百度平台app下载
  • 做网站 对方传销高明搜索seo
  • 【文章素材】3dBackgroundBoxes(3D背景盒子组件)项目及文章思路
  • Ubuntu 24.04.2 LTS 安装mysql8.0.36保姆级教程(从安装到远程连接)
  • Qt 开发自动化测试框架搭建
  • 函数 dirfd 详解
  • Git基础命令大全
  • anaconda searchanaconda show | conda 检索包资源安装指定版本包指定源安装命令package