2013-04-04 56 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

相关问题