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会重新启动。