如何在Android中将LayerDrawable转换为Drawable?

时间:2013-04-04 07:30:16

标签: bitmap drawable

在我的应用程序中,我使用 LayerDrawable 来显示覆盖图像。我这样做是成功使用了layerDrawable。

我将layerDrawable设置为imageView.setImageDrawable(layerDrawable);

现在我想使用这个图像drawable take作为Bitmap并在下一个图像处理中使用。 但是当我试图让Bitmap使用这个

((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 转换为 Drawable 并将此drawable设置为imageLayout backGround。 那就完美了。 我的问题是如何将LayerDrawable转换为drwable?

请任何一个帮助。 给我一些想法。 感谢。

1 个答案:

答案 0 :(得分: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;
}