gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 19:10:07 31 4
gpt4 key购买 nike

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

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

现在我想将此图像可绘制用作位图并用于下一个图像处理。
但是当我尝试让位图使用它时

((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 设置为 imageLayout backGround。
那么它的工作完美。
我的问题是如何将LayerDrawable 转换为drwable?

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

最佳答案

只是测试,我没试过

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;
}

关于bitmap - 如何在 Android 中将 LayerDrawable 转换为 Drawable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15805060/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com