1、场景:
在一些屏幕大DPI也大的设备上,比如镜面电视,使用ViewPager左右滑动会非常敏感,手指轻轻一动就划过去了,原因是因为系统的TouchSlop太小了。
TouchSlop:
系统能识别出被认为是滑动的最小距离,小于这个常量,系统不认为你在进行滑动。
与设备有关。
通过
- ViewConfigration.get(getContext()).getScaledTouchSlop()
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();
- }
<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();
}