tips: 一行代码引入看方式三

方式一

/**   * 重写 getResource 方法,防止系统字体影响   */  @Override  public Resources getResources() {     //禁止app字体大小跟随系统字体大小调节    Resources resources = super.getResources();    Configuration configuration = new Configuration();    configuration.setToDefaults();     resources.updateConfiguration(configuration, resources.getDisplayMetrics());    return resources;  }

或者:

/**   * 重写 getResource 方法,防止系统字体影响   */  @Override  public Resources getResources() {     //禁止app字体大小跟随系统字体大小调节    Resources resources = super.getResources();    if (resources != null && resources.getConfiguration().fontScale != 1.0f) {           android.content.res.Configuration configuration = resources.getConfiguration();      configuration.fontScale = 1.0f;      resources.updateConfiguration(configuration, resources.getDisplayMetrics());    }    return resources;  }

方式二

!!! 以下方法亲测可行,首先是屏蔽系统设置的字体大小:**

1. 在activity和fragment的父类OnCreate()调用

@Override    protected void onCreate(@Nullable Bundle savedInstanceState) {             super.onCreate(savedInstanceState);        adjustFontScale( getResources().getConfiguration());
 /**     * 设置字体大小不被系统设置影响     * @param configuration 字体配置     */    private void adjustFontScale( Configuration configuration) {             // 0.8 为应用内字体缩放比例        configuration.fontScale = (float) 0.8;        DisplayMetrics metrics = getResources().getDisplayMetrics();        WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);        wm.getDefaultDisplay().getMetrics(metrics);        metrics.scaledDensity = configuration.fontScale * metrics.density;        getBaseContext().getResources().updateConfiguration(configuration, metrics);    }

2. 在AndroidManifest.xml配置

在已注册的activity中添加 ( fontScale ),如:

<!--主要是fontScale属性--><activity            android:name=".ui.MainActivity"            android:launchMode="singleTask"        android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation|fontScale"/>        

!!! 接着,是屏蔽系统设置的显示大小:(部分机型的系统设置无该选项则可跳过)**

1. 添加工具类(通过反射获取系统设置api)

@Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        // 1.        adjustFontScale( getResources().getConfiguration());        // 2.        DisplayUtil.setDefaultDisplay(this);
public class DisplayUtil {    /**     * 获取手机出厂时默认的densityDpi     *     * @return     */    @SuppressLint("PrivateApi")    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 500;        }    }    /**     * 获取手机出厂时默认的densityDpi并设置给手机     * 在需要用到的activity中的onCreate中调用该方法     *     * @param context     */    public static void setDefaultDisplay(Context context) {        if (Build.VERSION.SDK_INT > 23) {            Configuration origConfig = context.getResources().getConfiguration();            origConfig.densityDpi = getDefaultDisplayDensity();//获取手机出厂时默认的densityDpi            context.getResources().updateConfiguration(origConfig, context.getResources().getDisplayMetrics());        }    }}

2. 在AndroidManifest.xml配置

在已注册的activity中添加 ( density )

方式三

一行代码即可屏蔽系统设置显示大小以及字体大小

  1. 引入第三方屏幕适配库AndroidAutoSize
implementation me.jessyan:autosize:1.1.2
  1. 在BaseApplication初始化AndroidAutoSize
    主要调用setExcludeFontScale()方法
// 屏幕适配        AutoSizeConfig.getInstance()              .setBaseOnWidth(false)// 是否以宽度作为适配标准              .setExcludeFontScale(true) // 屏蔽显示大小以及字体大小              .setDesignHeightInDp(720); // 设计图高度

更多相关文章

  1. android对话框大全
  2. android中的dispatchTouchEvent、onInterceptTouchEvent和onTouc
  3. Android(安卓)ormlite 框架介绍
  4. android LinearLayout 动态添加子View
  5. Android(安卓)处理 Button 单击事件的三种方法
  6. android之壁纸机制
  7. [整理]android中几种常见的尺寸
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. get android kernel
  2. android 用 SAX 解析xml文件!
  3. android 去锯齿
  4. Android请求服务器的两种方式--post, get
  5. Android布局中ScrollView与ListView的冲
  6. Android(安卓)ListView 滑动背景为黑色的
  7. 查看Android设备Mem命令
  8. Android(安卓)UI 常用控件讲解
  9. 当android里一堆button,用数组来循环建立
  10. 关于Android(安卓)studio打包发布,以及And