2012-05-29 33 views
4

我需要通過XML創建位圖資源,如:的Android如何設置不透明度位圖XML

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

但我需要設置不透明度爲這個位圖。有沒有一種方法可以使用這個XML來做到這一點?我知道如果Shape標籤允許在位圖標籤內部,它就可以工作,但我試過沒有成功。

+0

我將android:alpha =「。5」添加到位圖定義中,但沒有運氣。其他人能夠解決這個問題嗎? – lostintranslation

回答

3

如果您在ImageView中顯示位圖,則可以使用ImageView.setAlpha(int)方法。但是,如果通過RemoteViews來接受ImageView,就像更新小部件時一樣,您將無法調用此方法(如果您嘗試通過RemoteViews.setInt(int, String, int)調用它,您將會得到一個異常,告訴您同樣多)。

private Bitmap adjustOpacity(Bitmap bitmap, int opacity) 
    { 
     Bitmap mutableBitmap = bitmap.isMutable() 
           ? bitmap 
           : bitmap.copy(Bitmap.Config.ARGB_8888, true); 
     Canvas canvas = new Canvas(mutableBitmap); 
     int colour = (opacity & 0xFF) << 24; 
     canvas.drawColor(colour, PorterDuff.Mode.DST_IN); 
     return mutableBitmap; 
    } 

更多info。最常見的就像你的問題。 How to Set Opacity (Alpha) for View in Android

Documentation位圖來自developer.android.com。

+7

感謝您的輸入。但我想在xml中設置不透明度,所以我可以稍後在選擇器中使用。 –

+0

@ComicSansMSLover:我在選擇器中使用了'android:alpha =「0.6」',但它不能在APL級別20和以下工作。你有辦法做到這一點? –