Android S版本修改字体的大小和字体为粗体

1.字体大小非常简单:

vendor/mediatek/proprietary/packages/apps/SettingsProvider/res/values/freeme_defaults.xml

<!-- freeme.biantao, 20170307. Default font scale. [1.0:default 0.85:small 1.15:large 1.3:largest] -->
    <string name="def_font_scale" translatable="false">1.45</string>

这里默认为最大

2.字体为粗体,就显得很不简单!

刚开始,多少人为之疯狂,抓耳挠腮,百思不得其解(姐);

最后,还好我坚持住了,明白了其中的道理

分两步走:

(1)修改framework下的/frameworks/base/core/java/android/provider$Settings.java

       private static final float DEFAULT_FONT_SCALE = 1.0f;
        private static final int DEFAULT_FONT_WEIGHT = 0;//主要修改这个,改为300,为什么?等一会儿你就知道了,哈哈!

(2)修改vendor下/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/accessibility$FontWeightAdjustmentPreferenceController.java

public class FontWeightAdjustmentPreferenceController extends TogglePreferenceController {
     //*/tyd,lxd,20221030, add bold font
    static final int BOLD_TEXT_ADJUSTMENT =  //700-400=300
           FontStyle.FONT_WEIGHT_BOLD - FontStyle.FONT_WEIGHT_NORMAL;

    public FontWeightAdjustmentPreferenceController(Context context, String preferenceKey) {
        super(context, preferenceKey);
    }

    @Override
    public int getAvailabilityStatus() {
        return AVAILABLE;
    }

    @Override
    public boolean isChecked() {
        return Settings.Secure.getInt(mContext.getContentResolver(),
                Settings.Secure.FONT_WEIGHT_ADJUSTMENT, 300) == BOLD_TEXT_ADJUSTMENT
;

//为啥呢?因为要使两边的值相等才加粗字体,如果不等,无法加粗字体。

不得不说,设计之巧妙,不,奇妙诡思。
    }

    @Override
    public boolean setChecked(boolean isChecked) {
        return Settings.Secure.putInt(mContext.getContentResolver(),
                Settings.Secure.FONT_WEIGHT_ADJUSTMENT, (isChecked ? BOLD_TEXT_ADJUSTMENT : 0));
    }
}

到这里,就结束了,相信你修改这两个文件之后,你就能心如所愿的解决了当前的需求!

猜你喜欢

转载自blog.csdn.net/qq_46687516/article/details/131902236