Android系统自带有对字体的设置,这些设置是对字体的显示方式的设置,比如加粗,倾斜,下划线,字号等,但是对于字体本身,比如设置为楷体,隶书等貌似没有。Android系统只有一种默认的,如果需要修改字体,或者引用自己喜欢的字体,那么就需要自己设置或修改。

修改系统的字体可以下载修改字体的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);

设置字体不能直接在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

这些变量都可以通过名称知道其意思

这里附上一张自己写的应用中用到上面方法的例子的图片(可以用截屏的,这次就不用了)

最新文章

  1. 当类型为dynamic的视图模型遭遇匿名对象
  2. mvc2 To 4
  3. 解决ASP.NET 自定义报表部署到IIS浏览时出现ASP.NET会话已结束问题
  4. python的运算符
  5. Android自定义View——自定义搜索框(SearchView)
  6. 分支-03. 三天打鱼两天晒网-B3
  7. 如何做到机器学习竞赛Kaggle排名前2%
  8. 【转】Nginx反向代理和负载均衡
  9. rabbit入门教程
  10. RestTemplate远程调用POST请求:HTTP 415 Unsupported Media Type
  11. mysql常用命令行操作(二):表和库的操作、引擎、聚合函数
  12. 关于table的td和ul元素li隔行变色的功能实现
  13. webpack配置接口路径
  14. HDU-2066-一个人的旅行 【Dijkstra】
  15. 自己动手开发Socks5代理服务器
  16. 51nod1482
  17. IntelliJ IDEA使用心得之快捷键篇
  18. 读取siftgeo格式文件的matlab程序
  19. Android Studio 2.2 Record Espresso Test
  20. spring mvc: xml练习

热门文章

  1. c# List< int>和List< string>互相转换
  2. 一个人的旅行(hdu2066)Dijkstra算法模版
  3. Hanoi问题 算法
  4. Linux常用基本命令(head)
  5. Django-url反向解析和命名空间
  6. centos安装lamp
  7. CSS应用的小问题总结
  8. MyEclipse中搭建Struts2开发环境
  9. 接口自动化 基于python实现的http+json协议接口自动化测试框架源码(实用改进版)
  10. SQLServer 学习笔记之超详细基础SQL语句 Part 8