Android 编程下字库的使用及注意事项

 更新时间:2013年01月23日 15:09:53   作者:  
在安卓操作系统下对于 TextView 字体的支持非常有限,默认情况下TextView的typeface属性支持三种字体;接下来本文将会介绍Android 编程下字库的使用及注意事项,感兴趣的朋友可以了解下,希望对你有所帮助
在安卓操作系统下对于 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 简体字-微软雅黑-常规。


复制代码 代码如下:

package cn.sunzn.fonts;
import android.app.Activity;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView tv_title;
private TextView tv_author;
private TextView tv_line1;
private TextView tv_line2;
private TextView tv_line3;
private TextView tv_line4;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/**
* 在 assets 目录下创建 fonts 文件夹并放入要使用的字体文件(**.ttf)并提供相对路径给
* createFromAsset(AssetManager mgr, String path) 来创建 Typeface 对象,再通
* 过TextView.setTypeface(Typeface tf) 指定文本显示的字体。
*/
Typeface face = Typeface.createFromAsset(getAssets(),"fonts/SIMFANG.TTF");
tv_title = (TextView) findViewById(R.id.tv_title);
tv_title.setTypeface(face);
tv_author = (TextView) findViewById(R.id.tv_author);
tv_author.setTypeface(face);
tv_line1 = (TextView) findViewById(R.id.tv_line1);
tv_line1.setTypeface(face);
tv_line2 = (TextView) findViewById(R.id.tv_line2);
tv_line2.setTypeface(face);
tv_line3 = (TextView) findViewById(R.id.tv_line3);
tv_line3.setTypeface(face);
tv_line4 = (TextView) findViewById(R.id.tv_line4);
tv_line4.setTypeface(face);
}
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}

最后,还需要补充说明一下:虽然采用这种方式可以实现自己想要的显示效果,但是在采用这种方法之前开发人员还是需要考虑下性能消耗和运行环境以及自己 APP 的风格,然后再做出对应的选择。

原因有以下几点
•字库文件的大小:因为字库的尺寸少则几兆,多则几十兆,文件打包的时候对 *.ttf 格式的文件压缩率很低,所以会无形中增大 APP 的体积。

•运行环境的考虑:如果你的应用面向的是高版本的运行环境,可以考虑使用这种方法,如果用户的运行环境是 Android 2.2 需要放弃该方法。

•应用风格的考虑:如果你的应用既面向高版本运行环境,并且你的应用中统一使用指定的字体,可以考虑使用该方法;若是单单为了应用中的某几个字的显示效果就使用字库,则会得不偿失。

相关文章

  • Android性能优化getResources()与Binder导致界面卡顿优化

    Android性能优化getResources()与Binder导致界面卡顿优化

    这篇文章主要为大家介绍了Android性能优化getResources()与Binder导致界面卡顿优化示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Android中的脑残设计总结

    Android中的脑残设计总结

    本篇文章是对Android中的脑残设计进行了分析与介绍,需要的朋友参考下
    2013-05-05
  • Android实现延迟的几种方法小结

    Android实现延迟的几种方法小结

    这篇文章主要介绍了Android实现延迟的几种方法,结合实例总结了Android实现延迟的几种常见技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-02-02
  • Android实现歌词滚动效果

    Android实现歌词滚动效果

    这篇文章主要为大家详细介绍了Android实现歌词滚动效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • Android对话框自定义标题 对话框标题美化操作

    Android对话框自定义标题 对话框标题美化操作

    这篇文章主要为大家详细介绍了Android对话框自定义标题的相关资料,如何对对话框标题进行美化操作,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • android实现滑动标签页效果的代码解析

    android实现滑动标签页效果的代码解析

    这篇文章主要介绍了android实现滑动标签页效果,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • Android开发中Activity之间切换出现短暂黑屏的解决方法

    Android开发中Activity之间切换出现短暂黑屏的解决方法

    这篇文章主要介绍了Android开发中Activity之间切换出现短暂黑屏的解决方法,较为详细的分析了Android中Activity之间切换出现短暂黑屏的原因与解决方法,需要的朋友可以参考下
    2016-02-02
  • Android实现打开各种文件的intent方法小结

    Android实现打开各种文件的intent方法小结

    这篇文章主要介绍了Android实现打开各种文件的intent方法,结合实例形式总结分析了Android针对HTML、图片文件、pdf文件、文本文件、音频文件、视频文件等的intent打开方法,需要的朋友可以参考下
    2016-08-08
  • Android AsyncTask用法巧用实例代码

    Android AsyncTask用法巧用实例代码

    这篇文章主要介绍了Android AsyncTask用法巧用实例代码的相关资料,需要的朋友可以参考下
    2017-01-01
  • Android自定义ImageView实现在图片上添加图层效果

    Android自定义ImageView实现在图片上添加图层效果

    这篇文章给大家主要介绍了利用Android自定义ImageView如何实现在图片上添加图层的效果,实现的效果类似在图片增加秒杀、抢光等标签图片,对大家开发的时候具有一定的参考借鉴价值,有需要的朋友们下面来一起学习学习吧。
    2016-11-11

最新评论