您的位置:首页 > 移动开发 > Android开发

android加载第三方字体的方法与效率

2015-10-28 10:16 459 查看
使用第三方字体有三种方法:

1.重写TextView控件:在内部改字体 (缺点:多了就很卡)

public void setTypeface(Typeface tf, int style) {

if (style == Typeface.BOLD) {

super.setTypeface(Typeface.createFromAsset(getContext().getAssets(), "fonts/YourCustomFont_Bold.ttf"));

} else {

super.setTypeface(Typeface.createFromAsset(getContext().getAssets(), "fonts/YourCustomFont.ttf"));

}

}

2.用迭代递归View root,把要改字体的控件都找出来改 (第一次加载比较久,而且如果用了Fragment时,里面的字修改不了)

public static void applyFont(final Context context, final View root, final String fontName) {

try {

if (root instanceof ViewGroup) {

ViewGroup viewGroup = (ViewGroup) root;

for (int i = 0; i < viewGroup.getChildCount(); i++)

applyFont(context, viewGroup.getChildAt(i), fontName);

} else if (root instanceof TextView)

((TextView) root).setTypeface(Typeface.createFromAsset(context.getAssets(), fontName));

} catch (Exception e) {

Log.e(TAG, String.format("Error occured when trying to apply %s font for %s view", fontName, root));

e.printStackTrace();

}

}

3.在Application里面加载出字体,然后在自定义TextView中直接用(加载速度最快)

@Override

public void onCreate() {

// 加载自定义字体

try{

TEXT_TYPE = Typeface.createFromAsset(getAssets(),"front/fz.TTF");

}catch(Exception e){

Log.i("MyApp","加载第三方字体失败。") ;

TEXT_TYPE = null ;

}

super.onCreate();

   }

   

   自定义TextView中:

@Override

public void onCreate() {

// 加载自定义字体

try{

TEXT_TYPE = Typeface.createFromAsset(getAssets(),"front/fz.TTF");

}catch(Exception e){

Log.i("MyApp","加载第三方字体失败。") ;

TEXT_TYPE = null ;

}

super.onCreate();

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: