| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Android解决滑动冲突 -> 正文阅读 |
|
[移动开发]Android解决滑动冲突 |
文章目录Android解决滑动冲突滑动冲突的产生在讨论解决滑动冲突的方法之前,我们需要知道在哪些场景之下会产生滑动冲突。滑动冲突的产生是两个组件之间(或者更多),且这两个组件是包含关系(父控件和子控件),当父控件和子控件都可以对滑动事件进行拦截处理,而我们并没有对他们的滑动冲突进行处理,那么此时只有一个控件可以对滑动事件来进行响应,我们平常称这种情况为父控件和子控件产生了滑动冲突。主要有以下三个场景: 滑动冲突场景一父控件的滑动方向与子控件的滑动方向不同,这种场景的解决思路比较简单,例如我们平常使用的ViewPager+RecyclerView(假设viewPager是左右滑动,而RecyclerView是上下滑动),这种就是滑动我们滑动冲突的场景一,但是我们使用这种架构没有发生滑动冲突呢,原因是由于在viewPager内部帮助我们实现了解决滑动冲突的方法。而如果我们不使用ViewPager,来使用其他父控件可以滑动并且内部为RecyclerView或者ListView列表,此时就会发生滑动冲突。 对于滑动冲突场景一的具体解决方法为外部拦截法,下面进行具体介绍: 外部拦截法所谓的外部拦截法指的是对于整个事件序列都要先经过父控件的拦截处理,当我们需要此事件则进行拦截,如果不需要则交由子控件进行处理。(如果不理解事件分发机制的,请学习一下Android的事件分发机制)。我们只需要重写我们父控件的onInterceptTouchEvent()方法来决定是否拦截事件,假设外部为ViewPager(左右滑动,并在此处进行假设ViewPager没有处理滑动冲突,实际ViewPager源码上已解决滑动冲突问题),内部为RecyclerView(上下滑动),则我们重写ViewPager的onInterceptTouchEvent()方法,具体代码逻辑如下所示:
一般的解决思路就是判断手指滑动的方向(可以根据水平滑动的距离和竖直滑动距离来进行比较)来判断交给谁来拦截并且处理事件。(左右滑动交给ViewPager,上下滑动交给RecyclerView) 滑动冲突场景二滑动冲突的场景二是外部滑动方向和内部滑动滑动方向一致,例如上下滑动的ScrollView里面嵌套上下滑动的RecyclerView。该场景的具体解决办法是内部拦截法。 内部拦截法内部拦截法是指我们需要通过重写子控件的dispatcherTouchEvent分发方法,可以对事件的状态判断来进行分发事件的处理权交给父控件还是子控件。(比如说当处于某一状态时,我们要让子控件进行处理事件,其他状体交给父控件)。
具体代码如下: 子控件
父控件
滑动冲突场景三滑动冲突的场景三就是以上两种情况的结合或者同时出现,解决办法就是利用内部拦截和外部拦截的联合使用。 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
功能快捷键撤销:Ctrl/Command + Z 合理的创建标题,有助于目录的生成直接输入1次#,并按下space后,将生成1级标题。 如何改变文本的样式强调文本 强调文本 加粗文本 加粗文本 标记文本
H2O is是液体。 210 运算结果是 1024. 插入链接与图片链接: link. 图片: 带尺寸的图片: 居中的图片: 居中并且带尺寸的图片: 当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。 如何插入一段漂亮的代码片去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的
生成一个适合你的列表
创建一个表格一个简单的表格是这么创建的:
设定内容居中、居左、居右使用
SmartyPantsSmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
创建一个自定义列表
如何创建一个注脚一个具有注脚的文本。2 注释也是必不可少的Markdown将文本转换为 HTML。 KaTeX数学公式您可以使用渲染LaTeX数学表达式 KaTeX: Gamma公式展示 Γ ( n ) = ( n ? 1 ) ! ? n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n?1)!?n∈N 是通过欧拉积分 Γ ( z ) = ∫ 0 ∞ t z ? 1 e ? t d t ? . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞?tz?1e?tdt.
新的甘特图功能,丰富你的文章
UML 图表可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图: 这将产生一个流程图。:
链接
长方形
圆
圆角长方形
菱形
FLowchart流程图我们依旧会支持flowchart的流程图:
导出与导入导出如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。 导入如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
|
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 0:28:57- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |