2011-06-01 46 views
1

我在Android上的圖層列表有問題。我想做一堆簡單的圖像。我可以做到這一點下面的代碼:旋轉正在裁剪圖層列表項目

<layer-list 
xmlns:android="http://schemas.android.com/apk/res/android"> 

<item> 
    <rotate 
     android:pivotX="50%" android:pivotY="50%" 
     android:fromDegrees="0" android:toDegrees="0"> 
     <bitmap 
      android:src="@drawable/teste1" 
      android:gravity="center" /> 
    </rotate> 
</item> 

<item> 
    <rotate 
     android:pivotX="50%" android:pivotY="50%" 
     android:fromDegrees="-9" android:toDegrees="-9"> 
     <bitmap 
      android:src="@drawable/teste3" 
      android:gravity="center" /> 
    </rotate> 
</item> 

<item> 
    <rotate 
     android:pivotX="50%" android:pivotY="50%" 
     android:fromDegrees="9" android:toDegrees="9"> 
     <bitmap 
      android:src="@drawable/teste2" 
      android:gravity="center" /> 
    </rotate> 
</item> 

</layer-list> 

但是當我運行它,結果被裁剪的頂部和底部,下面的圖像上看到:

cropped_image

我還有一個疑問:如果我在<item>上放置一個ID,我如何在View上檢索它,以便我可以在代碼中更改位圖? documentation *表示我必須使用View.findViewByID,但我想獲得BitmapDrawable,並且我無法將視圖投射到Drawable!

我也嘗試使用Canvas.drawBitmap在CustomView上編碼相同的東西,但它看起來非常難看,如果有人能指出一個很好的解決方案,我會很感激。

在此先感謝

回答

0

什麼是你將在圖層列表?什麼是使用它作爲drawable的XML?你有沒有嘗試添加一些頂部和底部填充到包含圖層可繪製的視圖?


至於從代碼中訪問該位,則需要首先得到LayerDrawable,然後用其getDrawable或findDrawableByLayerId方法。

例如,如果你使用的位圖項層作爲其ID的視圖的背景是「容器」,你可以這樣做:你的回答

// get the layer list being used as the background of 'container' 
View view = findViewById(R.id.container); 
LayerDrawable layer = (LayerDrawable)view.getBackground(); 

// get the first layer's BitmapDrawable by index 
BitmapDrawable bg = (BitmapDrawable)layer.getDrawable(0); 

// get the BitmapDrawable of the layer whose id is 'teste2' 
BitmapDrawable bgTeste2 = (BitmapDrawable)layer.findDrawableByLayerId(R.id.teste2); 

// do whatever you want with the drawable 
bg.setAlpha(60); 
+0

謝謝,但我不幹試圖使用圖層列表並在自定義視圖上實現相同的視覺效果,直接在畫布上繪製位圖。 – 2011-06-27 14:43:35