close

今天有一個需求是要隨著使用者的不同而給予不同顏色的 ui

比如說一個「地球」的小 icon

管理者要給紅色

一般帳號要給綠色

但有時候會有節省 apk 大小的考量,盡量減少圖檔資源

所以我們只有一張 Drawable 可以用的時候該怎麼辦呢?

 

其實 Drawable 有個功能是 Filter

沒錯,就是我們很常使用的相機修圖濾鏡的感覺

drawable.setColorFilter() 這個 method 就可以做到改變顏色

因為專案中滿多地方需要用的

我就將它寫在 Utils 類,方便使用

 

下面就上 code 啦

public static Drawable changeDrawableColor
              (Context context, int icon, int newColor) {

    Drawable mDrawable = ContextCompat
                         .getDrawable(context, icon)
                         .mutate();

    mDrawable.setColorFilter(
    new PorterDuffColorFilter(newColor,PorterDuff.Mode.SRC_IN));

    return mDrawable;
}

 

其中的 ProterDuff.Mode 是精華所在

詳情看這篇

Android Drawable 的使用,各式 PorterDuff.Mode 介紹 』Willy's Fish教學筆記

 

 

 


arrow
arrow

    顏澤偉 發表在 痞客邦 留言(0) 人氣()