android引用外部字体

做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-develop)