gpt4 book ai didi

java - 是否可以将同一个 BitmapDrawable 分配给多个对象?

转载 作者:行者123 更新时间:2023-11-30 04:15:21 25 4
gpt4 key购买 nike

我创建了一个 BitmapDrawable,稍后我将其分配给函数中的多个对象,如下所示(不完全像这样,但出于测试目的将其剥离):

Drawable CreateBitmap(int col)
{ Bitmap b = Bitmap.createBitmap(50, 50, Config.ARGB_8888);
Canvas c = new Canvas(b);
c.drawColor(col);
return new BitmapDrawable(b);
}

这有效并为我创建了一个大小为 50 x 50 的 BitmapDrawable,我将其保存在内存中。然后,我将这个 BitmapDrawable 分配给各种按钮、复选框,以及出现的任何需要特定颜色的东西。

我遇到的问题是 BitmapDrawables 不知何故被截断了。看起来,如果我将它分配给一个高度为 80 的按钮,然后分配给一个高度为 160 的按钮,第一个很好地填充,而后者只填充了一半。似乎 BitmapDrawable 被设置为它的第一次使用,所有后续分配都受其限制。有时它会立即发生,有时它只会在我切换到另一个选项卡并返回到上一个选项卡时发生。

我认为 BitmapDrawable 在内存中将保持在 50x50,并且分配给它的对象要么获得具有适当大小的自己的版本(或在渲染时制作调整大小的副本),而不是它以某种方式更改 BitmapDrawable 本身。我承认,我不确定所有这一切是如何深入工作的,我将不胜感激任何关于我做错了什么的建议,如果我必须为我分配给它们的每个对象创建单独的 BitmapDrawables 或者我是否可以做其他事情。

最佳答案

BitmapDrawable 是一个 Drawable对象,包含诸如 setState 之类的方法非常特定于对象的实例。所以,不,我不认为可以轻松共享 BitmapDrawable。 (您可能能够成功地重用它们,就像 ListView 缓存列表成员的 View 一样;但是要求 BitmapDrawable 同时存在于两个或多个位置似乎要求太多了.)

关于java - 是否可以将同一个 BitmapDrawable 分配给多个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10113004/

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