Android系統自帶有對字體的設置,這些設置是對字體的顯示方式的設置,好比加粗,傾斜,下劃線,字號等,可是對於字體自己,好比設置爲楷體,隸書等貌似沒有。Android系統只有一種默認的,若是須要修改字體,或者引用本身喜歡的字體,那麼就須要本身設置或修改。windows
修改系統的字體能夠下載修改字體的app便可,可是若是是對於開發者想在本身的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);get
設置字體不能直接在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
這些變量均可以經過名稱知道其意思
這裏附上一張本身寫的應用中用到上面方法的例子的圖片(能夠用截屏的,此次就不用了)