/**
* 修改字体
* @param context
* @param root
*/
public static Typeface typeface=null;
public static void applyFont(final Context context, final View root) {
try {
if(typeface==null){
typeface = Typeface.createFromAsset(context.getAssets(), "fonts/pen.ttf");
}
if (root instanceof ViewGroup) {
ViewGroup viewGroup = (ViewGroup) root;
for (int i = 0; i < viewGroup.getChildCount(); i++)
applyFont(context, viewGroup.getChildAt(i));
} else if (root instanceof TextView)
((TextView) root).setTypeface(typeface);
} catch (Exception e) {
e.printStackTrace();
}
}
在方法外声明typeface是为了使用简单的单例模式,只需要初始化一次。typeface初始化耗费CPU及内存,只初始化一次可以极大的提高运行效率,尤其是针对ListView一类的控件。
在画笔中使用字体的方法是:
if(typeface!=null){
paint.setTypeface(typeface); // 设置自定义字体
}else{
paint.setTypeface(Typeface.DEFAULT); // 设置默认字体
}