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