Android TextView字体大小调节框架QFontChangeLib介绍
QFontChangeLib地址:https://github.com/qqliu10u/FontChangeLib.git
内容阅读类客户端通常都有个功能——调整字体大小,这种功能说复杂也不复杂,但做起来还是费些时间的。本框架是基于代理View创建来支持多Activity调节字体大小的一个小功能,支持应用内多TextView的字体大小调节(注意:不负责分辨率适配,调大了可能影响布局,不过好在一般这类需求都出现在列表之类可扩张的View内)。整体设计逻辑与QSkinLoader换肤框架相同,此处不再赘述。
一、效果图
二、使用方法
2.1 XML集成
- 在XML文件根布局中增加命名空间
xmlns:skin="http://schemas.android.com/android/skin"
- 对需要支持字体大小调节的TextView(仅支持TextView)设置:
skin:enableFontChange="true"
2.2 Java代码集成
在Application初始化时对框架进行初始化:
//加载字体变化框架
FontManager.getInstance().init(this);
建立一个BaseActivity,支持字体大小调节
package org.qcode.qfontchangelib;import android.graphics.PixelFormat;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Window;import org.qcode.fontchange.FontManager;
import org.qcode.fontchange.IActivityFontEventHandler;
import org.qcode.fontchange.IFontChangeActivity;/*** 所有Activity的父类*/
public abstract class BaseActivity extends FragmentActivityimplements IFontChangeActivity {private static final String TAG = "BaseActivity";private IActivityFontEventHandler mFontEventHandler;private boolean mFirstTimeApplyFont = true;private boolean mIsDestroyingFlag = false;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE); // 去掉标题栏,自定义getWindow().setFormat(PixelFormat.RGBA_8888);initFontHandler();}private void initFontHandler() {mFontEventHandler = FontManager.newActivityFontEventHandler().setSupportFontChange(isSupportFontChange()).setSwitchFontImmediately(isSwitchFontImmediately()).setNeedDelegateViewCreate(true);mFontEventHandler.onCreate(this);}@Overridepublic boolean isSupportFontChange() {return true;}@Overridepublic boolean isSwitchFontImmediately() {return true;}@Overridepublic void handleFontChange() {}@Overrideprotected void onDestroy() {mIsDestroyingFlag = true;super.onDestroy();mFontEventHandler.onDestroy();}@Overrideprotected void onPause() {super.onPause();}@Overrideprotected void onStop() {super.onStop();}@Overrideprotected void onResume() {super.onResume();此通知放在此处,尽量让子类的view都添加到view树内if(mFirstTimeApplyFont) {mFontEventHandler.onViewCreated();mFirstTimeApplyFont = false;}mFontEventHandler.onResume();}@Overrideprotected void onStart() {super.onStart();}@Overridepublic void onWindowFocusChanged(boolean hasFocus) {super.onWindowFocusChanged(hasFocus);mFontEventHandler.onWindowFocusChanged(hasFocus);}
}
如果不使用XML内的自定义属性,可以在Java代码内设置:
//代码内设置TextView的文字大小
FontManager.with(mMainTextView).setFontSize(20).applyFont();
切换字体大小时,调用接口如下,此时所有支持字体大小变化的TextView文字大小都是标准值的0.8倍(注意是标准大小不是当前大小):
FontManager.getInstance().changeFontSize(0.8f, mListener);
对于动态创建的View,如果不想对所有TextView动态设置属性,可以考虑用如下接口:
//对convertView的所有子元素应用字体大小属性
FontManager.getInstance().applyFont(view, true);
此时框架会对view及其子View内所有支持字体大小调节的TextView应用当前设置的字体大小。
三、总结
好了,框架使用就讲完了,这个框架是QSkinLoader的一个简化版本的设计,本来想在QSkinLoader内直接支持此功能,但觉得两者虽做法类似,但目标不同,所以单独抽出了这个小框架,大家如果有需要可以下一个试试。github地址:https://github.com/qqliu10u/FontChangeLib.git
Android TextView字体大小调节框架QFontChangeLib介绍相关推荐
- android textview字体大小设置
在实际工作中,经常会遇到要在代码中设置textview字体的大小,例如自定义组件中,设置字体的大小:比起直接在xml里面设置字体大小,在代码里面设置字体稍微复杂一些,因为有时候你设置字体后,效果完全和 ...
- android textview 字体颜色设置,Android textview 设置不同的字体大小和颜色
在实际应用中,需要将一个字符串已不同的颜色,字体显示出来.当然完全可以通过不同textview拼接出来.也可以通过一个textview来展示. 步骤如下: 1.定义不同style . 不妨如下定义2个 ...
- Android禁止app字体大小跟随系统字体大小调节
Android禁止app字体大小跟随系统字体大小调节 针对字体不随系统应用改变而改变,不然会导致原来的一些布局变化,在Application中重写getResources() @Overridepub ...
- android 设置字体大小不随系统大小变化,App字体大小不随系统改变而改变
在 "设置" , "显示" , "字体大小" 里面我们可以设置系统字体大小 App界面字体,如果被修改之后,可能就达不到理想状态的效果,界面 ...
- android程序字体大小,Android如何动态调整应用字体大小详解
前言 为什么要动态设置字体大小?由于项目面对的是中老年客户项目中自带的字体无法满足客户需求. Android应用字体大小默认随系统设置的字体大小而变化,但您可能不希望您的应用字体大小随系统设置变化,想 ...
- android程序字体大小,Android 动态调整应用字体大小
Android应用字体大小默认随系统设置的字体大小而变化,但您可能不希望您的应用字体大小随系统设置变化,想要自己控制,例如微信.本文简单介绍一下如何实现应用字体大小动态调整而不是依赖系统设置 字体大小 ...
- 文档结构图 字体大小调节
word2003(2007) 文档结构图 字体大小调节 今天打开同事发来的文档,"视图"菜单下选中"文档结构图"选项.然而看到的文档结构图的字体实在太小了,根本 ...
- Android修改字体大小
Android修改字体大小 位置: File->Settings->IDE Settings->Editor->Colors & Fonts -> Font 也可 ...
- 字体用sp android,Android设置字体大小, 该用sp还是dp?
Android设置字体大小, 该用sp还是dp? 大部分人肯定脱口而出, 用sp啊, 傻瓜都知道要用sp而不是dp!!! 那么为什么呢? 可能有人会说, 是google官方专门定义了sp这个单位来描述 ...
最新文章
- 1毛钱的CDN你家的网站会用吗?
- No-PDO-Models-MySQL数据库层抽象类
- ICCV 2019 最佳论文和最佳学生论文下载
- Zigbee中添加用户任务
- bg感_【0328】BG推文 | 5本我在逃生游戏里养娃娃+岁月缱绻已无你+关于我比女主苏这回事+消失的白月光又回来了等...
- java 根据类名示例化类_Java即时类| minusNanos()方法与示例
- 读书笔记《React:引领未来的用户界面开发框架》
- HBase-存储-HFile格式
- Mac的shell命令大全
- python预测比赛_分析5万多场英雄联盟比赛,教你如何轻松用python预测胜负
- 前端安全: 如何防止 XSS 攻击?
- 【PPT】常用技巧操作
- win7计算机锁频图片怎么设置,win7锁屏壁纸怎么换_win7更换锁屏壁纸的操作方法...
- Python3 面向对象编程
- iview table 导出csv文件错行问题
- 通过网页来打开app指定页面
- 简要讨论python对于1688的关键字搜索、商品详情在电商运营大数据分析、电商选品、竞品分析上的帮助
- 前言技术之Oauth2全方面介绍
- 一文搞懂指针,指针的指针,悬浮指针,野指针
- 灵魂的拷问 怎么将代码写得让人无法维护?
热门文章
- right syntax to use near 'USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8' at line 6
- 伟福软件能用c语言编程吗,我编的一个简单程序,用伟福编译就是老有错
- 电子商务中的社会化营销逻辑 三个成功案例的启发
- 全志平台的AWCodec
- vs2008无法安装
- 分享几个开源的android项目的源码,基本上用androidstudio都可以编译成功
- 高通repeater模式比较
- 小程序购物车之加入购物车
- 推荐几个MySQL 数据库的运维工具
- 噪声库NOISEX-92下载并用python转为wav