android裡的圖示之前一直都是使用圖檔,一個圖示需要不同尺寸的幾張圖檔,無形的會增大資源包,而阿裡圖示字型庫是矢量的,使用的是字元,可以使安裝包變得更輕量,于是決定使用阿裡圖示字型庫 .
傳送門:阿裡圖示的使用。
但阿裡圖示字型庫也不是能完美解決圖檔問題的,因為它說到底還是字型庫,是一個字元圖示,能解決純色圖示的問題,多色的圖示暫時還隻能用圖檔。
項目之前的使用方法一直都是按照阿裡圖示的使用方法使用的,但是随着項目上線運作,暴露出了一些問題,每當增加一種裝置類型,就需要修改代碼和更新一下字型庫,然後發包,每次還都是一樣的工作,更新多次之後就想能不能一勞永逸,于是決定把字型庫做成動态的,放在伺服器上,通過字型庫版本号去更新,每種裝置對應的類型也通過伺服器傳回,這樣後端增加一個裝置類型也不用更新app了。
從本地加載字型庫的方法
public static Typeface getTypeface(Context context) {
File file = new File(context.getFilesDir().getAbsolutePath() +
File.separator + "iconfont.ttf");
if (file.exists()){
return Typeface.createFromFile(file);
}
return null;
}
使用字型庫Unicode設定圖示的方法
Typeface typeface = FontUtils.getTypeface(this);
TextView tv_test = (TextView) findViewById(R.id.tv_test);
tv_test.setTypeface(typeface);
String cs="ꂘ";
Spanned result;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
result = Html.fromHtml(cs,Html.FROM_HTML_MODE_LEGACY);
} else {
result = Html.fromHtml(cs);
}
tv_test.setText(result);
效果如下圖
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnLxcjM5UzNzcTM4ITNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
這裡隻提供了本地加載字型庫和使用字型庫Unicode設定圖示的方法,至于從伺服器下載下傳更新字型庫,以及從後端取到Unicode碼,這些都隻是小問題了。
demo傳送門