Android 编程下字库的使用
来源:互联网 发布:笔记本thinkpad和mac 编辑:程序博客网 时间:2024/04/29 16:41
在安卓操作系统下对于 TextView 字体的支持非常有限,默认情况下 TextView 的 typeface 属性支持 "Sans","serif","monospace" 这三种字体,如果在没有指定字体的情况下,系统缺省会使用 "Sans" 作为文本显示的字体。但这三种字体只支持英文,也就是说只要你显示的文字是中文,无论你选择这三种字体中的哪一种,显示效果都是一样的。为此,谷歌又提供了另外一种字体的支持方式:字库。在 Android 2.2 版本中,安卓对字库的支持是比较有限的,从 Android 2.3.3 版本开始,安卓系统已经能够支持大部分的字库。这意味着你在 SDK 版本为 Android 2.2 的平台下写的使用字库的代码只有在 Android 2.3.3 系统及其更的高版本中才能生效;如果你将代码运行在 Android 2.2 的系统上,你将不会看到自己所期望的效果,取而代之的是一片空白。
下面来看一下代码实现过程,在代码实现实现之前,我们先来看下不同字库的显示效果,下图中第一张图:SIMKAI.TTF 简体字-楷体-常规、第二张图:MSYH.TTF 简体字-微软雅黑-常规。
1 package cn.sunzn.fonts; 2 3 import android.app.Activity; 4 import android.graphics.Typeface; 5 import android.os.Bundle; 6 import android.view.Menu; 7 import android.widget.TextView; 8 9 public class MainActivity extends Activity {10 11 private TextView tv_title;12 private TextView tv_author;13 private TextView tv_line1;14 private TextView tv_line2;15 private TextView tv_line3;16 private TextView tv_line4;17 18 public void onCreate(Bundle savedInstanceState) {19 super.onCreate(savedInstanceState);20 setContentView(R.layout.activity_main);21 /**22 * 在 assets 目录下创建 fonts 文件夹并放入要使用的字体文件(**.ttf)并提供相对路径给23 * createFromAsset(AssetManager mgr, String path) 来创建 Typeface 对象,再通24 * 过TextView.setTypeface(Typeface tf) 指定文本显示的字体。25 */26 Typeface face = Typeface.createFromAsset(getAssets(),"fonts/SIMFANG.TTF");27 28 tv_title = (TextView) findViewById(R.id.tv_title);29 tv_title.setTypeface(face);30 31 tv_author = (TextView) findViewById(R.id.tv_author);32 tv_author.setTypeface(face);33 34 tv_line1 = (TextView) findViewById(R.id.tv_line1);35 tv_line1.setTypeface(face);36 37 tv_line2 = (TextView) findViewById(R.id.tv_line2);38 tv_line2.setTypeface(face);39 tv_line3 = (TextView) findViewById(R.id.tv_line3);40 tv_line3.setTypeface(face);41 42 tv_line4 = (TextView) findViewById(R.id.tv_line4);43 tv_line4.setTypeface(face);44 }45 46 public boolean onCreateOptionsMenu(Menu menu) {47 getMenuInflater().inflate(R.menu.activity_main, menu);48 return true;49 }50 51 }
最后,还需要补充说明一下:虽然采用这种方式可以实现自己想要的显示效果,但是在采用这种方法之前开发人员还是需要考虑下性能消耗和运行环境以及自己 APP 的风格,然后再做出对应的选择。原因有以下几点:
- 字库文件的大小:因为字库的尺寸少则几兆,多则几十兆,文件打包的时候对 *.ttf 格式的文件压缩率很低,所以会无形中增大 APP 的体积。
- 运行环境的考虑:如果你的应用面向的是高版本的运行环境,可以考虑使用这种方法,如果用户的运行环境是 Android 2.2 需要放弃该方法。
- 应用风格的考虑:如果你的应用既面向高版本运行环境,并且你的应用中统一使用指定的字体,可以考虑使用该方法;若是单单为了应用中的某几个字的显示效果就使用字库,则会得不偿失。
1 0
- Android 编程下字库的使用
- Android 编程下字库的使用
- Android 编程下字库的使用
- 【Android】字库的使用及注意问题
- 12864字库的使用
- J2ME 点阵字库的使用
- android字库
- Android 字库
- android字库
- Android 如何增加新的字库
- Android 如何增加新的字库
- TextView使用指定的TTF字库
- TFT液晶屏使用自建的英文字库
- 16*16点阵字库HZK16的使用
- Ubuntu下iBus使用搜狗拼音字库
- 点阵字库编程原理
- 使用tesseract3.01字库训练教程完成全国企业信息中心简单验证码的字库建立。
- Android 编程下使用 Google 的 Gson 解析 Json
- poj2479,poj 2593 动归
- 如何学习嵌入式
- 八大排序算法
- cocos2dx3.2学习之路之新建项目
- IOS视频软件开发流程
- Android 编程下字库的使用
- Bash中多条shell命令的连接后,一次性发送
- IOS开发:导航栏添加多个按钮以及在左边添加logo
- eclipse svn插件安装方法
- simpleBLECentral.h为了编程方便,翻译后特此记录
- Objective-C语法之代码块(block)的使用
- MarkerDelegeteImp destroy 这是什么错啊?
- 编译Android出错:Unable to execute dex: Java heap space
- 利用Eclipse进行代码重构