Android系统自带有对字体的设置,这些设置是对字体的显示方式的设置,好比加粗,倾斜,下划线,字号等,可是对于字体自己,好比设置为楷体,隶书等貌似没有。Android系统只有一种默认的,若是须要修改字体,或者引用本身喜欢的字体,那么就须要本身设置或修改。windows
修改系统的字体能够下载修改字体的app便可,可是若是是对于开发者想在本身的app中使用具备本身个性的文字,能够按下面介绍的方法作(这里只是其中一种方法,相信,应该还有不少方法的)app
·将自定义的字体所在的ttf文件copy到工程assets/fonts/目录下面字体
通常字体的格式为ttf的。在C:\WINDOWS\Fonts目录下有windows系统提供的字体,可使用。也能够本身经过coreldraw+fontcreator软件本身制做字体对象
·在源码中进行以下修改:图片
TextView tv = (TextView)findViewById(R.id.c12_custom);资源
//从assert中获取有资源,得到app的assert,采用getAserts(),经过给出在assert/下面的相对路径。在实际使用中,字体库可能存在于SD卡上,能够采用createFromFile()来替代createFromAsset。开发
Typeface face = Typeface.createFromAsset ( getAssets() , “fonts/timesi.ttf” );字符串
tv.setTypeface (face);get
设置字体不能直接在XML文件中进行,须要经过源码来完成。源码
经过这两步就能够对TextView对象tv的字体进行了修改,改为本身定义的字体timesi.ttf
Android并不是和全部的TTF字体都能兼容,尤为在中文特殊字体的支持会存在问题,对于不兼容的字体,Android不出报错,只是没法正常显示。
一些注意
字库通常会很大,由于要将包括不少的字符集,使用其余的字库,这样就会增大程序的体积。可使用FontCreator软件对字库进行裁剪,使其体积变小。若是字库比较大,能够考虑放在sdcard上,使用createFromFile来得到Typeface对象
有些字库可能并不会包括咱们须要的字符,好比为了节省字库的体积,将中文字符取消,这样若是想使用这个字库显示中文的话,确定是不成功的。
这里再对程序中出现的源码进行解释。
修改字体就是调用setTypeface方法。这个方法的参数是一个Typeface类对象
Typeface是字体类
这个类比较简单,这里列出它的成员方法(这些方法都是静态方法,返回Typeface对象,能够直接做为setTypeface的参数):
·static Typeface create(Typeface family, int style) //静态方法,参数一为字体类型这里是Typeface的静态定义,如宋体,参数二风格,如粗体,斜体
·static Typeface create(String familyName, int style) //静态方法,参数一为字体名的字符串,参数二为风格同上,这里咱们推荐使用上面的方法。
·static Typeface createFromAsset(AssetManager mgr, String path) //静态方法,参数一为AssetManager对象,主要用于从APK的assets文件夹中取出字体,参数二为相对于Android工程下的assets文件夹中的外挂字体文件的路径。
·static Typeface createFromFile(File path) //静态方法,从文件系统构造一个字体,这里参数能够是sdcard中的某个字体文件
·static Typeface createFromFile(String path) //静态方法,从指定路径中构造字体
·static Typeface defaultFromStyle(int style) //静态方法,返回默认的字体风格
本类的常量静态定义,首先为字体类型名称
Typeface DEFAULT
Typeface DEFAULT_BOLD
Typeface MONOSPACE
Typeface SANS_SERIF
Typeface SERIF
字体风格名称
int BOLD
int BOLD_ITALIC
int ITALIC
int NORMAL
这些变量均可以经过名称知道其意思
这里附上一张本身写的应用中用到上面方法的例子的图片(能够用截屏的,此次就不用了)