简单记录下今天做的自定义字体大小修改的功能
需求:添加具体字体自定义大小功能、不需要跟随系统字体大小改变而改变
1.首先看一下用到的调节字体大小的控件:
控件继承自系统的SeekBar,添加了刻度、文字代码如下:
/** * Des: */public class RaeSeekBar extends AppCompatSeekBar {
// 刻度说明文本,数组数量跟刻度数量一致,跟mTextSize的长度要一致 private String[] mTickMarkTitles = new String[]{
"A", "标准", "", "A" }; // 刻度代表的字体大小 private float[] mTextSize = new float[]{
0.8f, 1.0f, 1.15f, 1.3f }; // 刻度画笔 private final Paint mTickMarkTitlePaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); //文本画笔 private final Paint mTitlePaint = new TextPaint(Paint.ANTI_ALIAS_FLAG); // 刻度文本字体大小 private float mTickMarkTitleTextSize = 18; // 刻度文本跟刻度之间的间隔 private float mOffsetY = 40; // 刻度线的高度 private int mLineHeight = 10; // 保存位置大小信息 private final Rect mRect = new Rect(); private int mThumbHeight; private int mThumbWidth; public RaeSeekBar(Context context) {
this(context, null); } public RaeSeekBar(Context context, AttributeSet attrs) {
this(context, attrs, 0); } public RaeSeekBar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr); init(); } protected void init() {
mTickMarkTitleTextSize = getSize(mTickMarkTitleTextSize); mOffsetY = getSize(mOffsetY); mLineHeight = getSize(mLineHeight); mTickMarkTitlePaint.setTextAlign(Paint.Align.CENTER); mTickMarkTitlePaint.setColor(ContextCompat.getColor(getContext(), R.color.color_66989FC3)); mTitlePaint.setTextAlign(Paint.Align.CENTER); mTitlePaint.setColor(ContextCompat.getColor(getContext(), R.color.color_303132)); } @Override protected void onDraw(Canvas canvas) {
super.onDraw(canvas); int max = getMax(); int width = can