【Android】页面禁止系统字体缩放 以及 显示缩放

废话不多说,直接贴代码

禁止系统字体缩放

在BaseActivity中或具体Activity中 添加如下代码

 //字体大小不受系统字体大小改变的影响
    @Override
    public Resources getResources() {
    
    
        Resources     res    = super.getResources();
        Configuration config = new Configuration();
        config.setToDefaults();
        res.updateConfiguration(config, res.getDisplayMetrics());
        return res;
    }

禁止系统显示缩放

在BaseActivity中或具体Activity中 添加如下代码


   /**
     * 禁止系统显示缩放
     */
    @Override
    public Resources getResources() {
    
    
        Resources     res    = super.getResources();
        Configuration config = new Configuration();
        config.densityDpi = getDefaultDisplayDensity();
        // config.setToDefaults();   // 禁止系统字体缩放
        res.updateConfiguration(config, 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;
        }
    }

大功告成

猜你喜欢

转载自blog.csdn.net/mingtiannihao0522/article/details/122828484