Android自定义字体

来源:互联网 发布:九维外呼软件 编辑:程序博客网 时间:2024/05/22 17:20

由于系统内置的字体都千篇一律,所以很多朋友都希望在APP中自定义一些比较好看或者比较特殊的字体,突显自己应用的特别之处。其实这很简单,今天就和大家分享一下Android中如何使用第三方的字体。另外啰嗦一句,很多第三方字体商用都是有版权的(例如方正系列字体),所以大家在使用第三方字体的时候,要么选择免费的开源字体,要么向相关字体设计公司购买版权,避免以后引起不必要的纠纷。

1.代码中定义第三方字体

代码给某一个控件自定义字体很方便,首先,把字体文件(通常是TTF或者OTF文件)放到assets文件夹下,然后给控件设置setTypeface就可以了。代码如下:

//实例并初始化TypeFaceTypeface typeFace = Typeface.createFromAsset(getAssets(), "MNTLX.TTF");tv_diyFont = (TextView) findViewById(R.id.tv_myDiyFont);//获取控件tv_diyFont.setTypeface(typeFace);//设置字体

2.给当前页面所有控件设置字体

有时候一个个的设置难免会有些费劲,我们希望保证UI的统一,要把所有的控件都设置为我们想要的字体,下面的代码提供了方法,用遍历的方式设置所有控件的字体,代码如下:

public void changeFonts(ViewGroup root, Activity act) {Typeface tf = Typeface.createFromAsset(act.getAssets(), "MNJLX.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);}}}

3.自定义控件设置字体

很多朋友可能觉得代码里设置还是比较麻烦,而且有时候我们用的控件经常用的都是自定义控件。干脆在自定义一个自己的控件,并且使用相关字体,这样以后使用控件的时候岂不是一劳永逸?当然没有问题,而且非常简单。下面我们就自定义一个TextView,并且设置字体。代码如下:

package com.wayne.fontdemo;import android.content.Context;import android.graphics.Typeface;import android.util.AttributeSet;import android.widget.TextView;/** * 自定义控件设置字体 * @author wayne-gao *         email: qdgaov@163.com * @date 2014年8月23日 */public class MyTextView extends TextView {private Typeface typeFace;private Context context;public MyTextView(Context context) {super(context);this.context = context;setFonts();// TODO Auto-generated constructor stub}public MyTextView(Context context, AttributeSet attrs) {super(context, attrs);this.context = context;setFonts();// TODO Auto-generated constructor stub}public MyTextView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);this.context = context;setFonts();// TODO Auto-generated constructor stub}private void setFonts(){typeFace = Typeface.createFromAsset(context.getAssets(), "MNJLX.TTF");this.setTypeface(typeFace);}}

项目运行截图如下:


OK!今天的内容就写到这里,有疑问的朋友在下面给我留言。这也算是博客的第一篇文章,实在不知道该写什么开始,只好想到哪儿写到哪儿,正好手头项目用到了自定义字体,所以就写下这篇博文,由于内容很简单,所以就放到Android基础这个分类里,以后有时间我会更多的为新手写一些基础方面的内容,同时也会在Android实例栏目提供一些相对复杂实用的实例。希望大家能够喜欢。


项目代码下载:

0 0