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);