通过反射修改ViewPager最小滑动距离mTouchSlop
2016-07-04 18:26
351 查看
1、场景:
在一些屏幕大DPI也大的设备上,比如镜面电视,使用ViewPager左右滑动会非常敏感,手指轻轻一动就划过去了,原因是因为系统的TouchSlop太小了。
TouchSlop:
系统能识别出被认为是滑动的最小距离,小于这个常量,系统不认为你在进行滑动。
与设备有关。
通过
ViewConfigration.get(getContext()).getScaledTouchSlop()
方法获得。
2、通过反射修改ViewPager私有变量mTouchSlop:
<span style="white-space:pre"> </span>try
{
Field field = ViewPager.class.getDeclaredField("mTouchSlop"); // 通过ViewPager类得到字段,不能通过实例得到字段。
field.setAccessible(true); // 设置Java不检查权限。
field.setInt(mViewPager, 150); // 设置字段的值,此处应该使用ViewPager实例。设置只有滑动长度大于150px的时候,ViewPager才进行滑动
}
catch (Exception e2)
{
e2.printStackTrace();
}
在一些屏幕大DPI也大的设备上,比如镜面电视,使用ViewPager左右滑动会非常敏感,手指轻轻一动就划过去了,原因是因为系统的TouchSlop太小了。
TouchSlop:
系统能识别出被认为是滑动的最小距离,小于这个常量,系统不认为你在进行滑动。
与设备有关。
通过
ViewConfigration.get(getContext()).getScaledTouchSlop()
方法获得。
2、通过反射修改ViewPager私有变量mTouchSlop:
<span style="white-space:pre"> </span>try
{
Field field = ViewPager.class.getDeclaredField("mTouchSlop"); // 通过ViewPager类得到字段,不能通过实例得到字段。
field.setAccessible(true); // 设置Java不检查权限。
field.setInt(mViewPager, 150); // 设置字段的值,此处应该使用ViewPager实例。设置只有滑动长度大于150px的时候,ViewPager才进行滑动
}
catch (Exception e2)
{
e2.printStackTrace();
}
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories