a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁(yè) > 系統(tǒng) > Android > 正文

Android 編程下字庫(kù)的使用及注意事項(xiàng)

2020-04-11 12:32:32
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
在安卓操作系統(tǒng)下對(duì)于 TextView 字體的支持非常有限,默認(rèn)情況下 TextView 的 typeface 屬性支持 "Sans","serif","monospace" 這三種字體,如果在沒(méi)有指定字體的情況下,系統(tǒng)缺省會(huì)使用 "Sans" 作為文本顯示的字體。但這三種字體只支持英文,也就是說(shuō)只要你顯示的文字是中文,無(wú)論你選擇這三種字體中的哪一種,顯示效果都是一樣的。為此,谷歌又提供了另外一種字體的支持方式:字庫(kù)。在 Android 2.2 版本中,安卓對(duì)字庫(kù)的支持是比較有限的,從 Android 2.3.3 版本開(kāi)始,安卓系統(tǒng)已經(jīng)能夠支持大部分的字庫(kù)。這意味著你在 SDK 版本為 Android 2.2 的平臺(tái)下寫(xiě)的使用字庫(kù)的代碼只有在 Android 2.3.3 系統(tǒng)及其更的高版本中才能生效;如果你將代碼運(yùn)行在 Android 2.2 的系統(tǒng)上,你將不會(huì)看到自己所期望的效果,取而代之的是一片空白。

下面來(lái)看一下代碼實(shí)現(xiàn)過(guò)程,在代碼實(shí)現(xiàn)實(shí)現(xiàn)之前,我們先來(lái)看下不同字庫(kù)的顯示效果,下圖中第一張圖:SIMKAI.TTF 簡(jiǎn)體字-楷體-常規(guī)、第二張圖:MSYH.TTF 簡(jiǎn)體字-微軟雅黑-常規(guī)。


復(fù)制代碼 代碼如下:

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 目錄下創(chuàng)建 fonts 文件夾并放入要使用的字體文件(**.ttf)并提供相對(duì)路徑給
* createFromAsset(AssetManager mgr, String path) 來(lái)創(chuàng)建 Typeface 對(duì)象,再通
* 過(guò)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;
}
}

最后,還需要補(bǔ)充說(shuō)明一下:雖然采用這種方式可以實(shí)現(xiàn)自己想要的顯示效果,但是在采用這種方法之前開(kāi)發(fā)人員還是需要考慮下性能消耗和運(yùn)行環(huán)境以及自己 APP 的風(fēng)格,然后再做出對(duì)應(yīng)的選擇。

原因有以下幾點(diǎn)
•字庫(kù)文件的大小:因?yàn)樽謳?kù)的尺寸少則幾兆,多則幾十兆,文件打包的時(shí)候?qū)?*.ttf 格式的文件壓縮率很低,所以會(huì)無(wú)形中增大 APP 的體積。

•運(yùn)行環(huán)境的考慮:如果你的應(yīng)用面向的是高版本的運(yùn)行環(huán)境,可以考慮使用這種方法,如果用戶的運(yùn)行環(huán)境是 Android 2.2 需要放棄該方法。

•應(yīng)用風(fēng)格的考慮:如果你的應(yīng)用既面向高版本運(yùn)行環(huán)境,并且你的應(yīng)用中統(tǒng)一使用指定的字體,可以考慮使用該方法;若是單單為了應(yīng)用中的某幾個(gè)字的顯示效果就使用字庫(kù),則會(huì)得不償失。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 亚洲一区二区三区日韩 | 韩国一区二区视频 | 另类天堂| 日本免费三片免费观看 | 国产在线一区二区三区 | 美女福利网站 | 国产成人亚洲综合 | 成人高清网站 | 另类二区 | 久久久久久久久久影院 | 俺要去97中文字幕 | 日韩美一级 | 人人插 | 免费av一区二区三区 | 日韩精品不卡 | 国产区视频在线观看 | 精品日韩欧美一区二区在线播放 | 久久亚洲精品国产一区 | 国产免费av一区二区三区 | 欧美一区永久视频免费观看 | 精品亚洲国产成av人片传媒 | 亚洲精品乱码久久久久久蜜桃图片 | 日韩三区在线观看 | 国产激情在线 | 免费特级黄毛片 | 密室大逃脱第六季大神版在线观看 | 午夜爱视频 | 在线va| 久久久国产精品 | 国产精品极品美女在线观看免费 | 亚洲综合色自拍一区 | 国产精品久久婷婷六月丁香 | 欧美日韩视频在线第一区 | 欧美全黄 | 免费成人在线观看 | 国产成人精品久久 | 免费av一区二区三区 | 欧美日韩国产一区二区三区 | 欧美精品1区2区 | 日韩成人一区二区 | 日韩在线视频观看 |