5

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

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

现在我想使用这个可绘制的图像作为位图并在下一个图像处理中使用。但是当我尝试让 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 背景。然后它完美地工作。 我的问题是如何将 LayerDrawable 转换为 drwable?

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

4

1 回答 1

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;
}
于 2013-04-04T13:45:47.560 回答