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

重庆网站seo什么意思外链购买交易平台

重庆网站seo什么意思,外链购买交易平台,中国网上购物平台有哪些,现在外贸推广做哪个平台如何设置view 点击事件不回调#xff0c;如何实现#xff1f;有什么区别#xff1f; setEnabled(false) 这个方案用于设置view是否可以响应用户的其他交互事件如触摸#xff0c;轨迹球等。 setClickable(false) 这个方法用于设置view是否可以响应用户的点击事件。 set…如何设置view 点击事件不回调如何实现有什么区别 setEnabled(false) 这个方案用于设置view是否可以响应用户的其他交互事件如触摸轨迹球等。 setClickable(false) 这个方法用于设置view是否可以响应用户的点击事件。 setOnTouchListener{ return true} 设置监听并且表示消费事件。 直接重写onTouchEvent 不要super相关逻辑 override fun onTouchEvent(event: MotionEvent?): Boolean {return true }直接重写 dispatchTouchEvent 不要super 相关逻辑 override fun dispatchTouchEvent(event: MotionEvent?): Boolean {return true }dispatchTouchEvent 相关 事件的责任链模式中在view层只有两个 onTouchEvent,返回true 表示消费事件dispatchTouchEvent false 表示不分发自己消费 但是view 层对这两个函数有默认实现。所以我们自定义view的时候很少全部都放弃super 相关逻辑这很毒瘤。而且dispatchTouchEvent 作为事件的分发这个一般不会重写。最多是处理onTouchEvent。 但是setOnTouchListener 的分发则是在dispatchTouchEvent 函数中。在dispatchTouchEvent这里: if (li ! null li.mOnTouchListener ! null (mViewFlags ENABLED_MASK) ENABLED li.mOnTouchListener.onTouch(this, event)) {result true; } ​ if (!result onTouchEvent(event)) {result true; }当我们onTouch 返回了true,则导致下面if 中前面的条件 !resultfalse,那么onTouchEvent函数就没有调用了这也是setOnTouchListener 优先级高于 的原因所以我们这里解决了为什么 setOnTouchListener{ return true} 和直接重写 dispatchTouchEvent 不要super 相关逻辑点击事件不回调的问题。 在来看一个问题 setEnabled(false) 是可以管控到触摸事件的我们再来dispatchTouchEvent的代码 if (onFilterTouchEventForSecurity(event)) {// 上面分发代码在这个里面。}onFilterTouchEventForSecurity public boolean onFilterTouchEventForSecurity(MotionEvent event) {//noinspection RedundantIfStatementif ((mViewFlags FILTER_TOUCHES_WHEN_OBSCURED) ! 0 (event.getFlags() MotionEvent.FLAG_WINDOW_IS_OBSCURED) ! 0) {// Window is obscured, drop this touch.return false;}return true; }结合 setEnabled( 源码中的部分代码 setFlags(enabled ? ENABLED : DISABLED, ENABLED_MASK);可以看到对于mViewFlags 赋值成了DISABLED就变成了 static final int FILTER_TOUCHES_WHEN_OBSCURED 0x00000400; static final int DISABLED 0x00000020; boolean result (DISABLEDFILTER_TOUCHES_WHEN_OBSCURED)!0;导致onFilterTouchEventForSecurity 直接返回false所以后续的 mOnTouchListener.onTouch 和 onTouchEvent(event) 都没有被执行了。 onTouchEvent 相关 通过上面的知识点我们就只剩下setClickable 没有开始找为什么了如果其他的都正确的话那么我们事件就会传递到onTouchEvent 中。 我们先来看serClickable 源码 public void setClickable(boolean clickable) {setFlags(clickable ? CLICKABLE : 0, CLICKABLE); }很单纯设置了一个Flag CLICKABLE。在OnTouchEvent 中 final boolean clickable ((viewFlags CLICKABLE) CLICKABLE|| (viewFlags LONG_CLICKABLE) LONG_CLICKABLE)|| (viewFlags CONTEXT_CLICKABLE) CONTEXT_CLICKABLE;clickablefalse ,就导致if (clickable || (viewFlags TOOLTIP) TOOLTIP) 这个循环根本就没有进去。所以说setClickable(false) 最终影响到了 判断的执行。 我们知道点击事件回调是当actionMotionEvent.ACTION_UP的时候触发 performClickInternal();performClick() public boolean performClick() {notifyAutofillManagerOnClick(); ​final boolean result;final ListenerInfo li mListenerInfo;if (li ! null li.mOnClickListener ! null) {playSoundEffect(SoundEffectConstants.CLICK);li.mOnClickListener.onClick(this);result true;} else {result false;}sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED); ​notifyEnterOrExitForAutoFillIfNeeded(true); ​return result; }可以看到。performClick实现内部调用了li.mOnClickListener.onClick(this);而mOnClickListener就是我们设置的点击事件。通过这个逻辑那么 直接重写onTouchEvent 不要super相关逻辑 也可以实现点击事件不回调了。 setClickable(false) 无效 可以看到下面的代码 isClickablefalse setOnClickListener {LogUtils.e(setOnClickListener) }我们先设置了clickable又设置了点击事件。但是点击事件可以响应为什么呢我们来看下设置点击事件的源码就知道了 public void setOnClickListener(Nullable OnClickListener l) {if (!isClickable()) {setClickable(true);}getListenerInfo().mOnClickListener l; }非常单纯的代码如果是不可点击那就设置为可以点击。所以 setClickable(false)得写到设置点击事件之后。 总结 其实这个逻辑还是蛮简单的主要是要点一下代码。最终汇总下 view 的dispatchTouchEvent 有默认实现当重写后放弃super那么直接影响了点击事件和触摸事件等事件的分发滚动也被影响了。所以点击事件回调就无法触发因为没有代码调用到点击事件。setEnabled 将flag 修改成了DISABLED导致onFilterTouchEventForSecurity返回了false所以触摸事件回调和onTouchEvent 事件都没有调用到。而点击事件回调在onTouchEvent 里面。setOnTouchListener{ return true} 会导致onTouchEvent 不会被调用是这么屏蔽的点击事件回调。setClickable(false) 也是更改的flagCLICKABLE,会导致onTouchEvent 中的clickable 等于false所以事件还没有分发就结束了。重写onTouchEvent,不要super这种思路还是直接放弃了源码的实现所以函数也没有地方调用。 事件分发和绘制原理还是得懂一下毕竟现在各个系统打架懂了跨平台方案可能学习得快一点吧。 Android 学习笔录 Android 往年面试题锦https://qr18.cn/CKV8OZ 2023年最新Android 面试题集https://qr18.cn/CgxrRy Android 车载开发岗位面试习题https://qr18.cn/FTlyCJ 音视频面试题锦https://qr18.cn/AcV6Ap Android 性能优化篇https://qr18.cn/FVlo89 Android Framework底层原理篇https://qr18.cn/AQpN4J Android 车载篇https://qr18.cn/F05ZCM Android 逆向安全学习笔记https://qr18.cn/CQ5TcL Android 音视频篇https://qr18.cn/Ei3VPD Jetpack全家桶篇内含Composehttps://qr18.cn/A0gajp OkHttp 源码解析笔记https://qr18.cn/Cw0pBD Kotlin 篇https://qr18.cn/CdjtAF Gradle 篇https://qr18.cn/DzrmMB Flutter 篇https://qr18.cn/DIvKma Android 八大知识体https://qr18.cn/CyxarU Android 核心笔记https://qr21.cn/CaZQLo
http://www.huolong8.cn/news/204267/

相关文章:

  • 建设网站有哪些好处北京网站建设设计公司
  • 弹幕网站怎么做网站源码下载了属于侵权吗
  • 做网站维护合同电脑无法登录建设银行网站
  • 北京工作室网站建设备案通过的网站
  • 个人网站布局深圳市住房和建设局app下载
  • 网站备案太慢德州品牌策划公司
  • 哲林高拍仪网站开发直通车推广技巧
  • 做app模板网站有哪些内容ccie网络培训
  • 网站开发项目经验描述站长工具百科
  • 怎么做游戏门户网站开发网站的项目背景描述
  • 中国网站为什么做的那么丑wordpress不能全屏
  • 福州高端网站建设公司汽车网站建设参考文献开题报告
  • 网站域名重定向成都服务器idc托管
  • 哪些网站可以做免费广告推广网站建设商城模板
  • 如何在百度上做公司网站卡密商城平台
  • 包头网站优化wordpress底部悬浮导航
  • 网站服务费做啥费用网站建设哪个公司做得好
  • 网站开发时如何兼容高端app定制开发
  • 荣县网站建设网站建设印花税税率
  • 药品在网站上做标签有哪些分类高新公司网站建设哪家好
  • 图片网站 代码通信建设工程项目经理查询网站
  • 做钓鱼网站怎么赚钱中装建设公司怎么样
  • 请问做网站怎么赚钱深圳好的高端企业网站建设公司
  • 建设工程质量管理条例网站深圳龙岗属于什么风险
  • 免费招工人在哪个网站济南网站设计
  • 做网站需提供什么资料北京中铁建设集团有限公司
  • 职业生涯规划网站开发背景华为官方手表网站
  • wordpress导航页面模板网络优化app
  • 东营市垦利区胜坨填建设站的网站代码编程入门先学什么
  • 高明网站制作网站站内文章互联