Android如何缩放应用中的字体大小

公司的项目中有一个需求,就是在项目中实现一个缩放字体大小的功能。之前想了很久没有想出什么简便的方法,老觉得给TextView加上几个字体不同大小的style很麻烦,并且要改变应用全局的字体大小感觉实现起来很不方便。后来在stackoverflow上找到了一个解决办法,附上地址:how to set scale in my own android application
然后我写一个工具类实现了APP字体全局缩放的功能,该方法仅仅会改变当前应用而不会影响其他的应用,代码如下:

public class TextScaleUtils {
    public static void scaleTextSize(Activity activity, boolean isScale) {
        float size;
        Configuration configuration = activity.getResources().getConfiguration();
        if (isScale) {
            size = 1.25f;
        } else {
            size = 1f;
        }
        configuration.fontScale = size; //0.85 small size, 1 normal size, 1.15 big etc
        DisplayMetrics metrics = new DisplayMetrics();
        activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
        metrics.scaledDensity = configuration.fontScale * metrics.density;
        activity.getBaseContext().getResources().updateConfiguration(configuration, metrics);//更新全局的配置
    }
}

只需要传一个activity和一个布尔型的参数(是否放大)即可,由于我们项目中只需要放大字体即可,工具类可以根据项目需求来自己定制放大的比例等,根据项目需求大家可以自行更改。需要注意的一点是:
该方法要在setContentView(R.layout.yourlayout)之前调用,调用之后会使得整个应用的字体都发生缩放效果,大家可以在BaseActivity中调用该方法
另外不要在Applicaiton类中使用该方法,一些设备可能会崩溃而导致闪退。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值