服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Android - Android 编程下字库的使用及注意事项

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

2021-01-06 12:41Android开发网 Android

在安卓操作系统下对于 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 简体字-微软雅黑-常规。

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

复制代码 代码如下:


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 需要放弃该方法。

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

 

延伸 · 阅读

精彩推荐
  • AndroidAndroid中AsyncTask详细介绍

    Android中AsyncTask详细介绍

    这篇文章主要介绍了Android中AsyncTask详细介绍,AsyncTask是一个很常用的API,尤其异步处理数据并将数据应用到视图的操作场合,需要的朋友可以参考下...

    Android开发网7432021-03-11
  • AndroidAndroid CardView+ViewPager实现ViewPager翻页动画的方法

    Android CardView+ViewPager实现ViewPager翻页动画的方法

    本篇文章主要介绍了Android CardView+ViewPager实现ViewPager翻页动画的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    Abby代黎明9592022-03-02
  • AndroidAndroid程序设计之AIDL实例详解

    Android程序设计之AIDL实例详解

    这篇文章主要介绍了Android程序设计的AIDL,以一个完整实例的形式较为详细的讲述了AIDL的原理及实现方法,需要的朋友可以参考下...

    Android开发网4622021-03-09
  • AndroidAndroid界面效果UI开发资料汇总(附资料包)

    Android界面效果UI开发资料汇总(附资料包)

    android ui界面设计,友好的界面会提高用户体验度;同时也增强了android ui界面设计的难度,本文提供了一些常用开发资料(有下载哦)感兴趣的朋友可以了解下...

    Android开发网4652021-01-03
  • AndroidAndroid实现Service获取当前位置(GPS+基站)的方法

    Android实现Service获取当前位置(GPS+基站)的方法

    这篇文章主要介绍了Android实现Service获取当前位置(GPS+基站)的方法,较为详细的分析了Service基于GPS位置的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    Ruthless8332021-03-31
  • AndroidAndroid实现固定屏幕显示的方法

    Android实现固定屏幕显示的方法

    这篇文章主要介绍了Android实现固定屏幕显示的方法,实例分析了Android屏幕固定显示所涉及的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    鉴客6182021-03-27
  • AndroidAndroid编程解析XML方法详解(SAX,DOM与PULL)

    Android编程解析XML方法详解(SAX,DOM与PULL)

    这篇文章主要介绍了Android编程解析XML方法,结合实例形式详细分析了Android解析XML文件的常用方法与相关实现技巧,需要的朋友可以参考下...

    liuhe68810042021-05-03
  • Android汇总Android视频录制中常见问题

    汇总Android视频录制中常见问题

    这篇文章主要汇总了Android视频录制中常见问题,帮助大家更好地解决Android视频录制中常见的问题,需要的朋友可以参考下...

    yh_thu5192021-04-28