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

這些變量都可以通過名稱知道其意思

 

 

這里附上一張自己寫的應用中用到上面方法的例子的圖片(可以用截屏的,這次就不用了)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM