Android 編程下字庫的使用及注意事項
更新時間:2013年01月23日 15:09:53 作者:
在安卓操作系統(tǒng)下對于 TextView 字體的支持非常有限,默認情況下TextView的typeface屬性支持三種字體;接下來本文將會介紹Android 編程下字庫的使用及注意事項,感興趣的朋友可以了解下,希望對你有所幫助
在安卓操作系統(tǒng)下對于 TextView 字體的支持非常有限,默認情況下 TextView 的 typeface 屬性支持 "Sans","serif","monospace" 這三種字體,如果在沒有指定字體的情況下,系統(tǒng)缺省會使用 "Sans" 作為文本顯示的字體。但這三種字體只支持英文,也就是說只要你顯示的文字是中文,無論你選擇這三種字體中的哪一種,顯示效果都是一樣的。為此,谷歌又提供了另外一種字體的支持方式:字庫。在 Android 2.2 版本中,安卓對字庫的支持是比較有限的,從 Android 2.3.3 版本開始,安卓系統(tǒng)已經(jīng)能夠支持大部分的字庫。這意味著你在 SDK 版本為 Android 2.2 的平臺下寫的使用字庫的代碼只有在 Android 2.3.3 系統(tǒng)及其更的高版本中才能生效;如果你將代碼運行在 Android 2.2 的系統(tǒng)上,你將不會看到自己所期望的效果,取而代之的是一片空白。
下面來看一下代碼實現(xiàn)過程,在代碼實現(xiàn)實現(xiàn)之前,我們先來看下不同字庫的顯示效果,下圖中第一張圖:SIMKAI.TTF 簡體字-楷體-常規(guī)、第二張圖:MSYH.TTF 簡體字-微軟雅黑-常規(guī)。
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)并提供相對路徑給
* createFromAsset(AssetManager mgr, String path) 來創(chuàng)建 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;
}
}
最后,還需要補充說明一下:雖然采用這種方式可以實現(xiàn)自己想要的顯示效果,但是在采用這種方法之前開發(fā)人員還是需要考慮下性能消耗和運行環(huán)境以及自己 APP 的風格,然后再做出對應的選擇。
原因有以下幾點:
•字庫文件的大小:因為字庫的尺寸少則幾兆,多則幾十兆,文件打包的時候?qū)?*.ttf 格式的文件壓縮率很低,所以會無形中增大 APP 的體積。
•運行環(huán)境的考慮:如果你的應用面向的是高版本的運行環(huán)境,可以考慮使用這種方法,如果用戶的運行環(huán)境是 Android 2.2 需要放棄該方法。
•應用風格的考慮:如果你的應用既面向高版本運行環(huán)境,并且你的應用中統(tǒng)一使用指定的字體,可以考慮使用該方法;若是單單為了應用中的某幾個字的顯示效果就使用字庫,則會得不償失。
下面來看一下代碼實現(xiàn)過程,在代碼實現(xiàn)實現(xiàn)之前,我們先來看下不同字庫的顯示效果,下圖中第一張圖:SIMKAI.TTF 簡體字-楷體-常規(guī)、第二張圖:MSYH.TTF 簡體字-微軟雅黑-常規(guī)。
復制代碼 代碼如下:
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)并提供相對路徑給
* createFromAsset(AssetManager mgr, String path) 來創(chuàng)建 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;
}
}
最后,還需要補充說明一下:雖然采用這種方式可以實現(xiàn)自己想要的顯示效果,但是在采用這種方法之前開發(fā)人員還是需要考慮下性能消耗和運行環(huán)境以及自己 APP 的風格,然后再做出對應的選擇。
原因有以下幾點:
•字庫文件的大小:因為字庫的尺寸少則幾兆,多則幾十兆,文件打包的時候?qū)?*.ttf 格式的文件壓縮率很低,所以會無形中增大 APP 的體積。
•運行環(huán)境的考慮:如果你的應用面向的是高版本的運行環(huán)境,可以考慮使用這種方法,如果用戶的運行環(huán)境是 Android 2.2 需要放棄該方法。
•應用風格的考慮:如果你的應用既面向高版本運行環(huán)境,并且你的應用中統(tǒng)一使用指定的字體,可以考慮使用該方法;若是單單為了應用中的某幾個字的顯示效果就使用字庫,則會得不償失。
您可能感興趣的文章:
- Android Studio 導入開源項目的正確姿勢及注意事項
- Android Studio3.0升級后使用注意事項及解決方法
- Android 程序執(zhí)行Linux命令的解決方法及注意事項
- 將Eclipse工程轉(zhuǎn)Android Studio工程的步驟與注意事項
- AndroidStudio升級到3.0的新特性和注意事項小結(jié)
- 詳解Android Service 使用時的注意事項
- Android 中ViewPager中使用WebView的注意事項
- Android TimerTask 的簡單應用及注意事項
- Android 如何使用log4j及注意事項
- Android集成百度地圖開發(fā)流程和注意事項
- Android onNewIntent()觸發(fā)機制及注意事項
- Android Studio添加第三方庫的注意事項
- Android 程序申請權(quán)限注意事項
- Android Service自啟動注意事項分析
- 關(guān)于Android WebView的loadData方法的注意事項分析
- Android NDK中socket的用法以及注意事項分析
- Android生存指南之:開發(fā)中的注意事項
- 60條Android開發(fā)注意事項與經(jīng)驗總結(jié)
相關(guān)文章
Android入門之使用SimpleAdapter實現(xiàn)復雜界面布局
這篇文章主要為大家詳細介紹了Android如何使用SimpleAdapter實現(xiàn)復雜的界面布局,文中的示例代碼講解詳細,對我們學習Android有一定的幫助,需要的可以參考一下2022-11-11Android原生TabLayout使用的超全解析(看這篇就夠了)
現(xiàn)在很多app都有頂部可左右切換的導航欄,并且還帶動畫效果,要實現(xiàn)這種導航欄,可以使用Android原生的Tablayout也可以借助第三方框架實現(xiàn),這篇文章主要給大家介紹了關(guān)于Android原生TabLayout使用的相關(guān)資料,需要的朋友可以參考下2022-09-09Android編程實現(xiàn)Listview點擊展開和隱藏的方法
這篇文章主要介紹了Android編程實現(xiàn)Listview點擊展開和隱藏的方法,涉及Android中Listview的響應點擊與樣式變換相關(guān)操作技巧,需要的朋友可以參考下2015-12-12Android設(shè)置TextView樣式SpannableString教程
這篇文章主要為大家介紹了Android設(shè)置TextView樣式SpannableString教程示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-02-02詳解Android TableLayout中stretchColumns、shrinkColumns的用法
這篇文章主要介紹了Android TableLayout中stretchColumns、shrinkColumns用法的相關(guān)資料,需要的朋友可以參考下2017-03-03