try {

Configuration mCurConfig = new Configuration();

// 获取ActivityManagerNative类的对象activityManagerNative

Class> activityManagerNative = Class

.forName("android.app.ActivityManagerNative");

/*

* 获得可调用getConfiguration方法的对象oam(调用getDefault方法得到的东西)

* getMethod:获取AMN类中的getDefault方法

* invoke:通过activityManagerNative对象调用getDefault方法

*/

Object oam = activityManagerNative.getMethod("getDefault")

.invoke(activityManagerNative);

// 获取getConfiguration方法并通过oam对象调用,得到config对象

Object config =

oam.getClass().getMethod("getConfiguration")

.invoke(oam);

mCurConfig.updateFrom((Configuration) config);

float fontScale = mCurConfig.fontScale;

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (IllegalAccessException e) {

e.printStackTrace();

} catch (IllegalArgumentException e) {

e.printStackTrace();

} catch (InvocationTargetException e) {

e.printStackTrace();

} catch (NoSuchMethodException e) {

e.printStackTrace();

}每次字体改动,如果对configChange没有设定,返回Activity会重新启动。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐