字体大小_Android仿微信全局字体大小调整

本文介绍如何在Android应用中实现类似微信的全局字体大小调整功能,包括自定义字体调整控件,实时预览字体大小变化,以及保存和初始化字体放大倍数的方法。虽然实现简单但存在限制,如只对sp单位有效,不适用于跨进程。
摘要由CSDN通过智能技术生成

一、前言

最近项目添加了一项调整应用字体大小功能,做完后空闲之余总结一下。本功能仿照微信应用“设置” - “通用”  -  “字体大小”功能,又有一点区别。据我所知,常见改变全局字体大小方法有两种,我把这两种分为可控和不可控,为什么这么分呢,当然不是为了方便记忆。那么简单说下两者方式的实现过程:

1、不可控:通过重写Actiivity的getResources()方法更新应用的字体倍数来调整全局字体大小

优点:实现简单

缺点:不可控制(所有字体放大倍数都是一致),无法跨进程(项目中另一个进程的字体不会改变,需要重新配置),只对sp字体单位有效果。....

2、可控:通过setTheme()方法,一开始就初始化设置不同风格的字体样式来更改全局字体大小。

优点:随意调节任意位置的字体大小

缺点:实现麻烦

而本文正式采用了第一种方案,主要是中途添加该功能,时间也不充裕,抽取字体大小又太过耗时。

微信字体大小个人猜测使用第二种方案,后者是更好的实现方式也不一定。

二、效果预览

5bf9cf26e6a6b9dcc8223bc0098c589a.png

三、实现步骤

1、自定义字体调整控件

网上找了一个相似的控件并加以完善,功能相对简单,就不做介绍了。

/** * TODO 仿微信字体大小调整 * 自定义属性: * lineWidth        线条粗细 * lineColor        线条颜色 * totalCount       线条格数 * circleColor      球型颜色 * circleRadius     球型颜色半径 * textFontColor    文字颜色 * smallSize        小“A” 字体大小 * standerSize      “标准” 字体大小 * bigSize          大“A” 字体大小 * defaultPosition  默认位置 */public class FontSizeView extends View {
        private int defaultLineColor = Color.rgb(33, 33, 33);    private int defaultLineWidth;    private int defaultMax = 5;    private int defaultCircleColor = Color.WHITE;    private int defaultCircleRadius;    // 当前所在位置    private int currentProgress;    // 默认位置    private int defaultPosition = 1;    // 一共有多少格    private int max = 7;    // 线条颜色    private int lineColor = Color.BLACK;    // 线条粗细    private int lineWidth;    //字体颜色    private int textColor = Color.BLACK;    //字体大小    private int smallSize = 14;    private int standerSize = 16;    private int bigSize = 28;    // 圆半径    private int circleRadius;    private int circleColor = Color.WHITE;    // 一段的宽度,根据总宽度和总格数计算得来    private int itemWidth;    // 控件的宽高    private int height;    private int width;    // 画笔    private Paint mLinePaint;    private Paint mTextPaint;    private Paint mText1Paint;    private Paint mText2Paint;    private Paint mCirclePaint;    // 滑动过程中x坐标    private float currentX = 0;    // 有效数据点    private List points = new ArrayList<>();    private float circleY;    private float textScaleX;    private fl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值