将下面的方法复制在BaseActivity中,getTextSize()方法的数值可以根据实际情况自定义更多

//重写字体缩放比例 api<=25
@Override
public Resources getResources() {
    Resources res = super.getResources();
    if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.N) {
        Configuration config = res.getConfiguration();
        config.fontScale = getTextSize();
        res.updateConfiguration(config, res.getDisplayMetrics());
    }
    return res;
}

//重写字体缩放比例  api>25
@Override
protected void attachBaseContext(Context newBase) {
    if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N) {
        final Resources res = newBase.getResources();
        final Configuration config = res.getConfiguration();
        config.fontScale = getTextSize();
        final Context newContext = newBase.createConfigurationContext(config);
        super.attachBaseContext(newContext);
    } else {
        super.attachBaseContext(newBase);
    }
}

//设置字体大、中、小
private float getTextSize() {
    float fontScale;
    int sizeType = AppSharePre.getInstance().getSizeType();
    if (sizeType == 3) {
        fontScale = (float) (1.3f);
    } else if (sizeType == 2) {
        fontScale = (float) (1.0f);
    } else {
        fontScale = (float) (0.8f);
    }
    return fontScale;
}

使用内部自定义字体大小时,在设置后重启MainActivity就可以了,将下内容复制到重启的方法中然后调用,记得将所有activity全部 finish() 了哟

Intent intent = getIntent();
overridePendingTransition(0, 0);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
finish();
overridePendingTransition(0, 0);
startActivity(intent);

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐