Java 反射

2017-08-05  本文已影响9人  不爱读书007

ViewPager 为例

调用ViewPager中私有的方法 【void smoothScrollTo(int x, int y)】

ViewPager mViewPager
1.获取Class 对象
Class<? extends ViewPager> viewPagerClass = mViewPager.getclass();
2.获取指定的方法
//public Method getDeclaredMethod(String name, Class<?>... parameterTypes)
Method smoothScrollTo = viewPagerClass .getDeclaredMethod("smoothScrollTo",int.class,int.class);
3.暴力反射
smoothScrollTo.setAccessible(true);
4.调用方法
smoothScrollTo.invoke(mViewPager,positionOffsetPixels,0);

修改ViewPager中私有的成员变量【mTouchSlop】

ViewPager mViewPager
1.获取Class 对象
Class<? extends ViewPager> viewPagerClass = mViewPager.getclass();
2、获取置顶成员变量
Field mTouchSlop = topViewPagerClass.getDeclaredField("mTouchSlop");
3.暴力反射
mTouchSlop .setAccessible(true);
4.调用方法
mTouchSlop.setInt(mViewPager,50);

上一篇下一篇

猜你喜欢

热点阅读