Android 全局修改字体
2016-07-20 16:28
330 查看
最进在开发项目时,产品提了一个需求,把全局的字体风格修改成自定义的字体。
修改字体的大致方案有:
一、自定义控件。将我们项目中使用到的控件全部自定义,并指定相应的字体;
二、封装一个字体辅助类,在辅助类中修改字体:遍历页面上的所有控件,并修改字体。
对于一个大项目来说,第一种方法明显是不尽人意的,在修改系统字体的时候,几乎要把布局全部改一下,这是程序员非常不乐意做的。第二种方法看起来还不错,但是有一个缺陷,就是在页面控件比较多的时候,会出现卡顿现象。
于是我在网上找了一些解决方案,基本上都是上面两种。后来,找到了一个修改系统字体的类库,用了一下,感觉还是挺不错的,类库使用方法:
一、将类库依赖到项目中;
二、在onCreate中初始化系统字体:@Override
public void onCreate() {
super.onCreate();
CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
.setDefaultFontPath("fonts/Roboto-RobotoRegular.ttf")
.setFontAttrId(R.attr.fontPath)
.build()
);
//....
} 三、重写attachBaseContext方法:
好了,介绍了最好的解决方案,其他的方案就不具体介绍了,希望本博客能对各位有所帮助。
修改字体的大致方案有:
一、自定义控件。将我们项目中使用到的控件全部自定义,并指定相应的字体;
二、封装一个字体辅助类,在辅助类中修改字体:遍历页面上的所有控件,并修改字体。
对于一个大项目来说,第一种方法明显是不尽人意的,在修改系统字体的时候,几乎要把布局全部改一下,这是程序员非常不乐意做的。第二种方法看起来还不错,但是有一个缺陷,就是在页面控件比较多的时候,会出现卡顿现象。
于是我在网上找了一些解决方案,基本上都是上面两种。后来,找到了一个修改系统字体的类库,用了一下,感觉还是挺不错的,类库使用方法:
一、将类库依赖到项目中;
二、在onCreate中初始化系统字体:@Override
public void onCreate() {
super.onCreate();
CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
.setDefaultFontPath("fonts/Roboto-RobotoRegular.ttf")
.setFontAttrId(R.attr.fontPath)
.build()
);
//....
} 三、重写attachBaseContext方法:
@Override protected void attachBaseContext(Context newBase) { super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); }当然,也可以直接在布局文件中设置fontpath。
好了,介绍了最好的解决方案,其他的方案就不具体介绍了,希望本博客能对各位有所帮助。
相关文章推荐
- Android客户端性能优化(魅族资深工程师毫无保留奉献)(转)
- mac设置android的adb环境变量
- Android 开源框架Universal-Image-Loader完全解析(二)--- 图片缓存策略详解
- 创业干货分享:初创公司移动应用开发工具库(集合)
- windows下Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件
- Android项目开发错误锦集-DuplicateFileException
- 【java|Android接口回调】小小猿理解的接口回调
- Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
- 浅析多线程同步
- 菜鸟都能理解的Android中View的事件分发机制及滑动冲突处理
- js可以关闭android页面上的键盘输入法
- 只用TextView实现知乎主页底部Tab
- Android中的屏幕适配
- Android Bitmap是不能比较的,这样做是错误的
- Android中获取控件的位置
- Android Service完全解析,关于服务你所需知道的一切(上)
- Android studio更新到2.2之后出现的问题
- android studio修改工程包名
- 编译可在Android上运行的qemu user mode
- Android高效加载大图、多图解决方案,有效避免程序OOM