码迷,mamicode.com
首页 > 移动开发 > 详细

android引用外部字体

时间:2016-08-19 15:12:43      阅读:288      评论:0      收藏:0      [点我收藏+]

标签:

做Android开发的时候,一些软件会要求一些特殊字体,我们需要引入外部的ttf格式的字体到程序中,具体操作步骤为:

在安卓应用程序的目录assets中新建fonts目录,将我们需要使用的ttf字体文件复制进去(otf格式的直接把后缀名改为ttf的就行了),然后代码:

// 将字体文件保存在assets/fonts/目录下,程序中通过如下方式实例化自定义字体:
Typeface typeFace = Typeface.createFromAsset(getAssets(),"fonts/DroidSansThai.ttf");
// 应用字体
textView.setTypeface(typeFace);

PS:1.如果想在此基础上再次对字体进行加粗,在界面配置的XML文件中使用android:textStyle="bold"是徒劳的,木有效果,此时怎么做?

我们可以依旧在代码中控制,加上一行代码:

et_note.getPaint().setFakeBoldText(true);就可以实现了

如果想整个界面都使用同样的字体,可以使用批处理,新增一个Java类,如下:

代码会用来加载所有的基于TextView的文本组件(TextView、Button、RadioButton、ToggleButton等等),而无需考虑界面的布局层级如何。(内存浪费较大)

另外ttf 字体库文件都比较大,会增加安装包的体积哦

public class FontManager {  
    
    public static void changeFonts(ViewGroup root, Activity act) {  
    
       Typeface tf = Typeface.createFromAsset(act.getAssets(),  
              "fonts/xxx.ttf");  
    
       for (int i = 0; i < root.getChildCount(); i++) {  
           View v = root.getChildAt(i);  
           if (v instanceof TextView) {  
              ((TextView) v).setTypeface(tf);  
           else if (v instanceof Button) {  
              ((Button) v).setTypeface(tf);  
           else if (v instanceof EditText) {  
              ((EditText) v).setTypeface(tf);  
           else if (v instanceof ViewGroup) {  
              changeFonts((ViewGroup) v, act);  
           }  
       }  
    
    }  
}  

更多:https://segmentfault.com/q/1010000000494116

android引用外部字体

标签:

原文地址:http://blog.csdn.net/wei_chong_chong/article/details/52250030

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!