android viewdraghelper 点击移动,ViewDragHelper使用时遇到的问题
ViewDragHelper使用时遇到的问题
今天在写一个用ViewDragHelper写一个上滑菜单的时候遇到了一个解决不了的问题。应该就是和ViewGroup的时间分发机制有关的问题。暂时想不到快捷的方法来解决这个问题。
怎么描述呢,自定义一个ViewGroup的时候,为了测量和摆放的方便,选择继承了FrameLayout,布局文件中放了两个LinearLayout。放在前面的LinearLayout是被下一个覆盖的。
android:id="@+id/cv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
android:id="@+id/ll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/a"
android:orientation="horizontal">
然后把InterceptTouchEvent()事件和onTouchEvent()事件都交给ViewDragHelper的shouldInterceptTouchEvent(ev)和processTouchEvent(event)事件去处理。可以如果这样写,上层的LinearLayout根本没机会去处理自己的滑动事件,反而给被覆盖在底下的ListView给消费了,如果InterceptTouchEvent()事件返回True,那盖在上面的LinearLayout能顺利处理自己的滑动事件,但是就算把它移走了,事件还是被CustomView给拦截了,ListView没法获得消费事件的机会。
按照View的事件分发机制,确实是这么回事,从外层的ViewGroup往里面传,如果子View是ViewGroup,继续往里传,直到遍历每个View,有消费的能力的话,就把事件给消费了,如果遍历全部的子View没有能消费的,就调用super.onDispatchTouchEvent()往上层传递,看父节点的ViewGroup的onTouchEvent()是否消费,ViewGroup是默认不拦截事件的。可是这儿ListView都没遮盖住了,相当于不可见的情况下,还是会传递过去吗?看来需要再去找找相关的资料,希望能顺利解决这个问题。
2015年9月13日21:12:25重新编辑
似乎找到问题所在了。好像在于ViewDragHelper.CallBack的clampViewPositionVertical()这个回调方法,Api文档上说,这个方法是限制子View的运动的,默认实现是不允许移动的,必须重写此方法,才能使子View在垂直方向上移动。大致理解应该是,手指拖动的View,拖动到哪个位置了,具体产生了多少偏移量,回掉的参数作为参考返回给我们,具体让我们来实现该怎么移动视图,典型的方法回掉。我没有把盖住的ViewGroup的移动禁止掉,导致ListView所在的整个ViewGroup在移动,ListView却没办法正常的滚动,在这个方法中判断掉除了我想移动的View外,ListView终于能正常滚动了。在此记下一笔,再接再厉努力学习。
android viewdraghelper 点击移动,ViewDragHelper使用时遇到的问题相关推荐
- android 图标点击变大,使android桌面图标变大
在平板上android系统默认的桌面图标太小了,需要将其放大.之前在launcher中做了简单的图片放大,带 来了图标模糊的问题,重新研究源码寻求解决办法. (1)解决思路是先找到应用程序的图标等信息 ...
- android判断点击次数_Android应用统计-使用时长及次数统计(一)
关键字: 应用统计 Android源码 应用使用时长 应用使用次数 最近在做有关于应用统计有关的工作,主要是统计系统中客户端应用(非系统自带的那些基础应用,比如DownLoadManager),在每一 ...
- Android应用统计-使用时长及次数统计(一)
关键字: 应用统计 Android源码 应用使用时长 应用使用次数 最近在做有关于应用统计有关的工作,主要是统计系统中客户端应用(非系统自带的那些基础应用,比如DownLoadManager),在每一 ...
- android studio创建9.patch图片,使用时出现Error: Duplicate resources
创建9.patch图片 右键点击需要创建9.patch图片的图片文件,选择"create 9-Patch file",然后按照需要设置. 制作好后,使用时出现Error:Dupli ...
- Android 11.0 系统Settings app详情页增加统计使用时长功能
1.概述 在系统产品开发中,在app详情页展示着权限,使用缓存数据等数据,由于产品需求需要在app 详情页增加app使用时长功能的需求来查看app使用情况的功能,所以就需要统计app使用的时间了 来实 ...
- android 计算方法数量,如何精确计算Android应用的使用时长
应用时长的计算友盟早期做法计算每个Activity的时长,然后全部相加就是App的使用时长.后来的做法是在客户端计算,如果应用离开小于30秒内又切回就将切走的时间也算入App的使用时长内. 本人觉得既 ...
- Android Scroll(四)----ViewDragHelper
1.Google在其support库中为我们提供了DrawerLayout和SlidingPaneLayout两个布局来帮助开发者实现侧边栏滑动的效果.但是在这两个布局的背后,却隐藏着一个功能强大的类 ...
- android tab 点击,TabLayout.Tab点击事件
1,大家都知道 android.support.design.widget.TabLayout 中的TabLayout并没有点击事件 只有addOnTabSelectedListener这个选中监听, ...
- 有没搞错?Java 对象不使用时要赋值为 null?
点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 许多Java开发者都曾听说过"不使用的对象应手动赋 ...
最新文章
- 联想G480类似没有小键盘开关的机器
- strcat()函数常见问题
- Java虚拟机详解(五)------JVM参数(持续更新)
- 简单的html渲染模板引擎
- 手机热点总是正在连接服务器,手机热点用不了?可以尝试这个方法。
- 引路蜂地图API:Gis.Navigation包定义
- springmvc php,SpringMVC 常用注解
- android 字体像素转换工具类_android px,dp,sp大小转换工具
- C语言求解100的带分数形式的代码
- Access更新查询(更新员工姓名)
- svn服务器设置忽略文件夹,如何使用SVN忽略目录?
- 【微信授权登录失败】Universal Link check failed 第5步问题解决(授权二次确认弹框问题)
- kron matlab_MATLAB中kron命令有什么用途
- CF1076C Meme Problem(韦达定理)
- 2022陈箫箫胡程灿信息论课程作业 MIMO信道(multi-input multi-output,MIMO)简介
- java netcdf精度_NetCDF 介绍
- DataGridView控件数据导出表格
- Python之signal模块详解
- ICLR 2022:​PiCO,基于对比消歧的偏标签学习 丨AI Drive
- 《调色师手册:电影和视频调色专业技法(第2版)》——布置调色工作间