在安卓操作系统下对于 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 须要放弃该方法。
  • 应用风格的考虑:假设你的应用既面向高版本号执行环境。而且你的应用中统一使用指定的字体,能够考虑使用该方法;若是单单为了应用中的某几个字的显示效果就使用字库,则会得不偿失。

Android 编程下字库的使用的更多相关文章

  1. Android 编程下 App Install Location

    从 API 8 开始(参考官方文档:App Install Location | Android Developers),你可以将你的应用安装在外部储存中(例如,安装到设备的 SD 卡上).这是一个可 ...

  2. Android 编程下的自定义 xmlns

    什么是 xmlns xmlns是 XML Namespaces 的缩写,中文名称是 XML命名空间. xmlns 使用规则 xmlns:namespace-prefix="namespace ...

  3. Android 编程下 DP、SP 以及屏幕像素密度

    有时需为视图属性指定大小尺寸值(通常以像素为单位,但有时也用点.毫米或英寸).最常见的属性有: 文字大小(Text Size),指设备上显示的文字像素高度: 边距(Margin),指定视图组件间的距离 ...

  4. Android 编程下 Touch 事件的分发和消费机制

    Android 中与 Touch 事件相关的方法包括:dispatchTouchEvent(MotionEvent ev).onInterceptTouchEvent(MotionEvent ev). ...

  5. Android 编程下的四大组件之服务(Service)

    服务(Service) 是一种在后台运行,没有界面的组件,由其他组件调用开始.Android 中的服务和 Windows 中的服务是类似的东西,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类 ...

  6. Android 编程下的 Secret Code

    我们很多人应该都做过这样的操作,打开拨号键盘输入 *#*#4636#*#* 等字符就会弹出一个界面显示手机相关的一些信息,这个功能在 Android 中被称为 Android Secret Code, ...

  7. Android 编程下图片的内存优化

    1. 对图片本身进行操作 尽量不要使用 setImageBitmap.setImageResource. BitmapFactory.decodeResource 来设置一张大图,因为这些方法在完成 ...

  8. Android 编程下的代码混淆

    什么是代码混淆 Java 是一种跨平台的.解释型语言,Java 源代码编译成中间”字节码”存储于 class 文件中.由于跨平台的需要,Java 字节码中包括了很多源代码信息,如变量名.方法名,并且通 ...

  9. Android 编程下去除 ListView 上下边界蓝色或黄色阴影

    默认的情况下,在 ListView 滑动到顶部或者是底部的时候,会有黄色或者蓝色的阴影出现.在不同的版本上解决的方法是不同的,在 2.3 版本之前可以在 ListView 的属性中通过设置 andro ...

随机推荐

  1. KafkaConsumer对于事务消息的处理

    Kafka添加了事务机制以后,consumer端有个需要解决的问题就是怎么样从收到的消息中滤掉aborted的消息.Kafka通过broker和consumer端的协作,利用一系列优化手段极大地降低了 ...

  2. Spring框架学习(4)spring整合hibernate

    内容源自:spring整合hibernate    spring整合注解形式的hibernate 这里和上一部分学习一样用了模板模式, 将hibernate开发流程封装在ORM层提供的模板类Hiber ...

  3. 解决:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.2:compile

    在项目构建的时候遇到了这样的问题:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.2:compile(d ...

  4. 转: git的图文使用教程(巨详细)

    转自: http://blog.jobbole.com/78960/ Git使用教程 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集 ...

  5. Vi 编辑器

    Vi的用法 1.简介 Vi,是一个文本编辑器,可以执行输出.删除.查找.替换.块操作等众多文本操作,vi不是一个排版程序.不像word或WPS那样可以对字体.格式.段落等属性进行编排,他只是一个文本编 ...

  6. arcgis的mxd数据源检查,和自动保存为相对路径

    arcgis的mxd数据源(含矢量和影像)检查,和,检查是否为相对路径,自动保存为相对路径 ArcGIS10.0和ArcGIS10.2.2测试通过 下载地址:http://files.cnblogs. ...

  7. html 接收GET请求参数

       function GetQueryString(name)   {        var reg = new RegExp("(^|&)"+ name +" ...

  8. CSS3文本溢出

    text-overflow: text-overflow:clip | ellipsis; clip:剪切多余的文字. ellipsis:文本溢出时显示省略标记. 要实现文本溢出剪切显示省略标记,还需 ...

  9. MYSQL AND OR的联用

    MYSQL中"AND"和"OR"都是条件控制符."AND"是求交集,而"OR"则是求并集,非常多情况下,须要联用它们两个 ...

  10. mybatis加入条件

    根据http://www.cnblogs.com/friends-wf/p/3799315.html搭建的环境 User.xml加入的 if where判断的 <!-- 根据条件查询一个用户 - ...