Оригинальный адрес: https://blog.csdn.net/sunshine199221/article/details/72765931
Я прочитал этот блог, но я не видел адрес загрузки пакета jar, и я чувствовал, что добавление jar также увеличит размер приложения, Я только что увидел, что кто-то в области комментариев дал лучший метод, поэтому Я записал это.
написать класс инструментов
public final class DispUtility {
/**
* 禁用7.0(23)以上显示大小改变和文字大小
*/
public static Resources disabledDisplayDpiChange(Resources res) {
Configuration newConfig = res.getConfiguration();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//字体非默认值
if (res.getConfiguration().fontScale != 1) {
newConfig.fontScale = 1;
}
newConfig.densityDpi = getDefaultDisplayDensity();
res.updateConfiguration(newConfig, res.getDisplayMetrics());
} else {
//字体非默认值
if (res.getConfiguration().fontScale != 1) {
newConfig.fontScale = 1;//设置默认
res.updateConfiguration(newConfig, res.getDisplayMetrics());
}
}
return res;
}
/**
* 获取手机出厂时默认的densityDpi
*/
public static int getDefaultDisplayDensity() {
try {
Class aClass = Class.forName("android.view.WindowManagerGlobal");
Method method = aClass.getMethod("getWindowManagerService");
method.setAccessible(true);
Object iwm = method.invoke(aClass);
Method getInitialDisplayDensity = iwm.getClass().getMethod("getInitialDisplayDensity", int.class);
getInitialDisplayDensity.setAccessible(true);
Object densityDpi = getInitialDisplayDensity.invoke(iwm, Display.DEFAULT_DISPLAY);
return (int) densityDpi;
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
}
Просто укажите это в BaseActivity
public class BaseActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DispUtility.disabledDisplayDpiChange(this.getResources());
}
}