我正在使用LruCache来缓存整个应用程序中使用的许多小BitmapDrawables。问题是我使用图像的不同位置的大小不同。
我在从缓存中检索可绘制对象时设置了边界,然后将其设置为 ImageView 以具有正确的大小。
当我设置边界时,可绘制对象也会在其他位置调整大小。
如何在不使用drawable.getConstantState().newDrawable()
的情况下解决此问题?滚动列表视图时,从缓存的可绘制对象创建新的可绘制对象非常慢。
在 DynamicDrawableSpans 中使用相同的图像,我无法在跨度本身上设置边界,只能直接在可绘制对象上设置边界。
在单独的缓存中为不同的上下文缓存相同的可绘制对象图像是否明智?
我让它正常工作。
我将 LruCache 类型从 BitmapDrawable 更改为 Bitmap。这样,缓存仅存储位图图像,而不存储可绘制边界。
当我想设置位图时,我将其转换为BitmapDrawable
Drawable d = new BitmapDrawable(getResources(), bitmap);
然后,我为新创建的可绘制对象实例设置边界
d.setBounds(0, 0, sizex, sizey);
这样,位图的每个实例都是具有自己的边界的单独Drawable
。