您的位置:首页 > 运维架构

通过反射修改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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android viewpager