Android全局修改字体大小,Android 仿微信全局字体大小调整

image

目录

一、前言

二、效果预览

三、实现步骤

1、自定义字体调整控件

2、滑动按钮改变当前页面预览字体大小

3、返回时,保存放大倍数并重启应用

4、初始化应用时配置字体放大倍数。

四、Demo地址

五、内容推荐

一、前言

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

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

优点:实现简单

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

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

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

缺点:实现麻烦

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

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

好了,扯得有点多。我要开始真正的表演了 ... 掌声呢 鲜花呢 .....................人呢

image

二、效果预览

image

三、实现步骤

1、自定义字体调整控件

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

import android.content.Context;

import android.content.res.TypedArray;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.graphics.Point;

import android.util.AttributeSet;

import android.view.MotionEvent;

import android.view.View;

import java.util.ArrayList;

import java.util.List;

import blcs.lwb.lwbtool.R;

import blcs.lwb.lwbtool.utils.DensityUtils;

/**

* 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 &#

你可能感兴趣的:(Android全局修改字体大小)