2013-04-04 68 views
5

在我的應用程序中,我使用LayerDrawable來顯示覆蓋層image.and我這樣做是成功使用layerDrawable。如何將Android中的LayerDrawable轉換爲Drawable?

我得到layerDrawable設置爲一個imageView.setImageDrawable(layerDrawable);

現在我想使用這個圖像drawable作爲位圖,並在下一個圖像處理中使用。 但是當我試圖讓位圖使用這種

((BitmapDrawable)imageLayout.getDrawable()).getBitmap(); 

我得到了下面的錯誤。

04-04 12:56:02.102: E/AndroidRuntime(15127): java.lang.ClassCastException: android.graphics.drawable.LayerDrawable cannot be cast to android.graphics.drawable.BitmapDrawable 

,所以我改變我的圖像處理的後續,並嘗試轉換LayerDrawable可繪製並將此作爲繪製背景imageLayout。 然後它完美的工作。 我的問題是如何將LayerDrawable轉換爲drwable?

請任何一個幫助。 給我一些想法。 謝謝。

回答

5

只是一個測試,我還沒有試過這種

public Drawable geSingleDrawable(LayerDrawable layerDrawable){ 

      int resourceBitmapHeight = 136, resourceBitmapWidth = 153; 

      float widthInInches = 0.9f; 

      int widthInPixels = (int)(widthInInches * getResources().getDisplayMetrics().densityDpi); 
      int heightInPixels = (int)(widthInPixels * resourceBitmapHeight/resourceBitmapWidth); 

      int insetLeft = 10, insetTop = 10, insetRight = 10, insetBottom = 10; 

      layerDrawable.setLayerInset(1, insetLeft, insetTop, insetRight, insetBottom);  

      Bitmap bitmap = Bitmap.createBitmap(widthInPixels, heightInPixels, Bitmap.Config.ARGB_8888); 

      Canvas canvas = new Canvas(bitmap); 
      layerDrawable.setBounds(0, 0, widthInPixels, heightInPixels); 
      layerDrawable.draw(canvas); 

      BitmapDrawable bitmapDrawable = new BitmapDrawable(getResources(), bitmap); 
      bitmapDrawable.setBounds(0, 0, widthInPixels, heightInPixels); 

      return bitmapDrawable; 
} 
+3

100000我can.Thank哥哥.. – 2013-04-04 14:04:50

+0

沒有工作,只顯示1尺寸不合適 – Lester 2015-08-31 10:32:33

+3

@Lester如果您發現該層答案不適用於你的情況,所以要爲你解決問題,請簡要說明你的案例和代碼,或者最好的辦法是開始你自己的問題。給予否決投票不會讓我知道任何關於你的案件/問題。 – MKJParekh 2015-09-03 05:29:30

相關問題