日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 编程下字库的使用

發布時間:2024/3/24 Android 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 簡體字-微軟雅黑-常規。

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 编程下字库的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。