android 禁用 7.0(23)以上字體大小和顯示大小隨系統變化


直接上代碼工具類  簡單明了

 1 /**
 2  * Author : monkey0928
 3  * E-mail : hanbao@xwtec.c
 4  * Date : 2020/6/29 17:54
 5  * DESCRIBE :禁用 7.0(23)以上字體大小和顯示大小隨系統變化
 6  */
 7 public final class DispUtility {
 8 
 9     /**
10      * 禁用7.0(23)以上顯示大小改變和文字大小
11      */
12     public static Resources disabledDisplayDpiChange(Resources res) {
13         Configuration newConfig = res.getConfiguration();
14         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
15             //字體非默認值
16             if (res.getConfiguration().fontScale != 1) {
17                 newConfig.fontScale = 1;
18             }
19             newConfig.densityDpi = getDefaultDisplayDensity();
20             res.updateConfiguration(newConfig, res.getDisplayMetrics());
21         } else {
22             //字體非默認值
23             if (res.getConfiguration().fontScale != 1) {
24                 newConfig.fontScale = 1;//設置默認
25                 res.updateConfiguration(newConfig, res.getDisplayMetrics());
26             }
27         }
28         return res;
29     }
30 
31     /**
32      * 獲取手機出廠時默認的densityDpi
33      */
34     public static int getDefaultDisplayDensity() {
35         try {
36             Class aClass = Class.forName("android.view.WindowManagerGlobal");
37             Method method = aClass.getMethod("getWindowManagerService");
38             method.setAccessible(true);
39             Object iwm = method.invoke(aClass);
40             Method getInitialDisplayDensity = iwm.getClass().getMethod("getInitialDisplayDensity", int.class);
41             getInitialDisplayDensity.setAccessible(true);
42             Object densityDpi = getInitialDisplayDensity.invoke(iwm, Display.DEFAULT_DISPLAY);
43             return (int) densityDpi;
44         } catch (Exception e) {
45             e.printStackTrace();
46             return -1;
47         }
48     }
49 
50 } 

接着在代碼當中使用即可(BaseActivity或Application)

1  DispUtility.disabledDisplayDpiChange(this.getResources());

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM