2015-12-06 162 views
3

我從這裏抓了幾個材料設計圖標透明度:設置的材料設計圖標

https://google.github.io/material-design-icons/#getting-icons

我需要一些人也有點透明的「灰色」 /「靜音」。

我試圖創建一個可繪製位圖來定義的α:

<?xml version="1.0" encoding="utf-8"?> 
<bitmap xmlns:android="http://schemas.android.com/apk/res/android" 
    android:src="@drawable/ic_info_outline_black_24dp" 
    android:alpha=".7"> 
</bitmap> 

然而,這是行不通的。

創建具有不同級別透明度的多個png是否正確答案?如果是這樣,任何擔心應用程序變得不必要的大?

回答

0

您可以動態地使使用setColorFilter

private Drawable changeColor() { 

    try { 
     Drawable image; 

     int imageId = R.drawable.ic_folder_black; 
     int color = Color.parseColor("#A6000000"); 

     image = getResources().getDrawable(imageId, getTheme()); 


     image.setColorFilter(color, PorterDuff.Mode.SRC_IN); 

     return image; 
    } catch (IllegalStateException e) { 

    } 
    return null; 
} 

,然後調用方法上的ImageView這樣

imageView.setImageDrawable(changeColor()); 

在顏色A6是α和它就像65%透明度。以下是包含透明度級別及其十六進制值的列表。 I got the list from here.

100% — FF 
95% — F2 
90% — E6 
85% — D9 
80% — CC 
75% — BF 
70% — B3 
65% — A6 
60% — 99 
55% — 8C 
50% — 80 
45% — 73 
40% — 66 
35% — 59 
30% — 4D 
25% — 40 
20% — 33 
15% — 26 
10% — 1A 
5% — 0D 
0% — 00 

**編輯**

我們設置過濾器PorterDuff.Mode.SRC_IN因爲它改變你想要的任何其他顏色的黑色圖像的唯一途徑。對於不同顏色的圖像使用PorterDuff.Mode.MULTIPLY

+0

謝謝。此時不確定有什麼更好的。像這樣在代碼中動態修改或包含多個已修改alpha的資源。 – lostintranslation

+0

通過包含不同顏色的重複圖像,您將使您的應用程序變得非常大。讓我們來看一個場景的實例,您需要爲您的應用程序提供近60張圖片。如果你想讓他們中的一半具有不同的顏色或透明度,你將擁有近90張圖片!另一方面,如果您害怕應用程序的速度,請使用我在AsyncTask類中告訴您的邏輯。 –