Android APP的字型設定
Android系統自帶有對字型的設定,這些設定是對字型的顯示方式的設定,比如加粗,傾斜,下劃線,字号等,但是對于字型本身,比如設定為楷體,隸書等貌似沒有。Android系統隻有一種預設的,如果需要修改字型,或者引用自己喜歡的字型,那麼就需要自己設定或修改。
修改系統的字型可以下載下傳修改字型的app即可,但是如果是對于開發者想在自己的app中使用具有自己個性的文字,可以按下面介紹的方法做(這裡隻是其中一種方法,相信,應該還有很多方法的)
·将自定義的字型所在的ttf檔案copy到工程assets/fonts/目錄下面
一般字型的格式為ttf的。在C:\WINDOWS\Fonts目錄下有windows系統提供的字型,可以使用。也可以自己通過coreldraw+fontcreator軟體自己制作字型
·在源碼中進行如下修改:
TextView tv = (TextView)findViewById(R.id.c12_custom);
//從assert中擷取有資源,獲得app的assert,采用getAserts(),通過給出在assert/下面的相對路徑。在實際使用中,字型庫可能存在于SD卡上,可以采用createFromFile()來替代createFromAsset。
Typeface face = Typeface.createFromAsset ( getAssets() , “fonts/timesi.ttf” );
tv.setTypeface (face);
設定字型不能直接在XML檔案中進行,需要通過源碼來完成。
通過這兩步就可以對TextView對象tv的字型進行了修改,改成自己定義的字型timesi.ttf
Android并非和所有的TTF字型都能相容,尤其在中文特殊字型的支援會存在問題,對于不相容的字型,Android不出報錯,隻是無法正常顯示。
一些注意
字庫一般會很大,因為要将包括很多的字元集,使用其他的字庫,這樣就會增大程式的體積。可以使用FontCreator軟體對字庫進行裁剪,使其體積變小。如果字庫比較大,可以考慮放在sdcard上,使用createFromFile來獲得Typeface對象
有些字庫可能并不會包括我們需要的字元,比如為了節省字庫的體積,将中文字元取消,這樣如果想使用這個字庫顯示中文的話,肯定是不成功的。
這裡再對程式中出現的源碼進行解釋。
修改字型就是調用setTypeface方法。這個方法的參數是一個Typeface類對象
Typeface是字型類
這個類比較簡單,這裡列出它的成員方法(這些方法都是靜态方法,傳回Typeface對象,可以直接作為setTypeface的參數):
·static Typeface create(Typeface family, int style) //靜态方法,參數一為字型類型這裡是Typeface的靜态定義,如宋體,參數二風格,如粗體,斜體
·static Typeface create(String familyName, int style) //靜态方法,參數一為字型名的字元串,參數二為風格同上,這裡我們推薦使用上面的方法。
·static Typeface createFromAsset(AssetManager mgr, String path) //靜态方法,參數一為AssetManager對象,主要用于從APK的assets檔案夾中取出字型,參數二為相對于Android工程下的assets檔案夾中的外挂字型檔案的路徑。
·static Typeface createFromFile(File path) //靜态方法,從檔案系統構造一個字型,這裡參數可以是sdcard中的某個字型檔案
·static Typeface createFromFile(String path) //靜态方法,從指定路徑中構造字型
·static Typeface defaultFromStyle(int style) //靜态方法,傳回預設的字型風格
本類的常量靜态定義,首先為字型類型名稱
Typeface DEFAULT
Typeface DEFAULT_BOLD
Typeface MONOSPACE
Typeface SANS_SERIF
Typeface SERIF
字型風格名稱
int BOLD
int BOLD_ITALIC
int ITALIC
int NORMAL
這些變量都可以通過名稱知道其意思
這裡附上一張自己寫的應用中用到上面方法的例子的圖檔(可以用截屏的,這次就不用了)