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
這些變量都可以通過名稱知道其意思
這里附上一張自己寫的應用中用到上面方法的例子的圖片(可以用截屏的,這次就不用了)