Android TextView字体大小调节框架QFontChangeLib介绍
来源:互联网 发布:linux编辑文件不保存 编辑:程序博客网 时间:2024/06/07 00:28
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 FragmentActivity implements IFontChangeActivity { private static final String TAG = "BaseActivity"; private IActivityFontEventHandler mFontEventHandler; private boolean mFirstTimeApplyFont = true; private boolean mIsDestroyingFlag = false; @Override protected 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); } @Override public boolean isSupportFontChange() { return true; } @Override public boolean isSwitchFontImmediately() { return true; } @Override public void handleFontChange() { } @Override protected void onDestroy() { mIsDestroyingFlag = true; super.onDestroy(); mFontEventHandler.onDestroy(); } @Override protected void onPause() { super.onPause(); } @Override protected void onStop() { super.onStop(); } @Override protected void onResume() { super.onResume(); ////此通知放在此处,尽量让子类的view都添加到view树内 if(mFirstTimeApplyFont) { mFontEventHandler.onViewCreated(); mFirstTimeApplyFont = false; } mFontEventHandler.onResume(); } @Override protected void onStart() { super.onStart(); } @Override public 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
0 0
- Android TextView字体大小调节框架QFontChangeLib介绍
- TextView、EditText字体大小调节
- 设置android textview字体大小
- android textview字体大小设置
- Android-TextView 默认字体大小
- Android中TextView的字体大小
- Android 动态改变TextView字体大小
- android 动态设置TextView字体大小
- android原生TextView设置字体大小
- TextView字体大小
- Android中TextView中的字体大小设置
- android---重写textview自适应屏幕分辨率,压缩字体大小
- Android动态更改TextView的字体大小
- Android textview自适应宽度自动调整字体大小
- Android 如何调节LatinIME键盘上的字体大小
- Android 如何调节LatinIME键盘上的字体大小
- dw中调节字体大小
- eclipse 调节字体大小
- Android学习笔记之从相册选取多张图片遇得到的一些问题
- 【Data Structures】 10. Hashing—Mission Possible
- ListView的item点击事件无响应的解决方法
- Linux上iptables防火墙的基本应用教程
- 服务端接受客户端上传的文件
- Android TextView字体大小调节框架QFontChangeLib介绍
- UI 界面性能优化(二)
- 结合apache和tomcat实现多域名、多端口绑定
- 检测当前鼠标点击的是UI的代码
- mysql---存储数据
- 英语学习总结—破枪式—学习困惑—2016年12月20日
- 毕向东笔记摘抄之多线程
- STL-priority_queue
- mysql 1215错误——外键建立失败