天天看點

阿裡圖示字型庫的動态使用Android

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);
           

效果如下圖

阿裡圖示字型庫的動态使用Android

這裡隻提供了本地加載字型庫和使用字型庫Unicode設定圖示的方法,至于從伺服器下載下傳更新字型庫,以及從後端取到Unicode碼,這些都隻是小問題了。

demo傳送門