2016-07-01 85 views
2

嗨我試圖以編程方式創建一個圖層列表調整大小的位圖作爲項目。從我看到的BitmapDrawable已被棄用。新的構造函數需要以下參數 - public BitmapDrawable(Resources res,Bitmap bitmap)。我從下面的一個非常基本的例子開始。以編程方式創建圖層列表

BitmapDrawable background = new BitmapDrawable(); 
    background.setBounds(10,10,10,10); 
    Drawable[] layers = {background}; 
    LayerDrawable splash_test = new LayerDrawable(layers); 
    splash_test.setLayerInset(0, 0, 0, 0, 0); 

如何正確使用新的BitmapDrawable構造函數,以及如何將可繪製資源鏈接到背景對象。

回答

5

你提到你想從一些位圖上創建一個圖層列表。你所擁有的基本上是正確的,你需要做的就是把每個位圖對象變成一個BitmapDrawable。要做到這一點,你可以使用:

BitmapDrawable layer1 = new BitmapDrawable(context.getResources(), bitmap1); 

如果你是一個活動,當你這樣做,你甚至不需要調用context.getResources(),只是getResources()

然後,你將採取所有圖層並創建LayerDrawable,就像你已經是:

Drawable[] layers = {layer1, layer2, layer3}; 
LayerDrawable splash_test = new LayerDrawable(layers); 

(注意,三層將高於二層,二層將上述層1)。

一旦你有了LayerDrawable,你可以在你的視圖的背景上使用view.setBackgoundDrawable(drawable)(在API 16和更高版本上)或view.setBackground(drawable)(在API 16之前)進行設置。 This post顯示如何檢查設備版本並在支持前16個設備時調用適當的方法。

如果你想定位圖層的相對位置,那麼你也需要像你的代碼一樣使用setLayerInset(),但是我建議你在獲取你的圖層列表後嘗試。

+0

非常感謝詳細的寫得詳細的解釋,bitmap1上面提到什麼或者我將如何創建該對象 –

+0

沒問題! 'bitmap1'應該是您想調整大小並放入圖層列表的位圖之一。我從你的問題中推斷你已經有了位圖。如果情況並非如此,您可以在要執行此操作的位置添加代碼並解釋您計劃獲取位圖的位置? –