我有一个CardView
s 列表,其中包含Bitmap
从网络或从 a 返回的 s LruCache
。
我还Palette.from(Bitmap).generate()
对这些位图进行了操作。这是昂贵的。我想以HashMap<...>
某种方式保存这些调色板颜色。
这是我的想法,HashMap<String, Integer>
用于每个项目名称及其相应的颜色值。
如果名称更改,则更改颜色值。列表中的项目不会经常更改,这就是我考虑使用HashMap<String, Integer>
.
其次,将其保存在HashMap
某个地方,也许在磁盘上,这样当用户再次启动应用程序时,如果它已经存在(并且与名称匹配),则无需生成Palette
样本。
我正在考虑以这种方式实现它:
public class PaletteCache {
private static PaletteCache sPaletteCache;
private static HashMap<String, Integer> mCache;
private PaletteCache() {
loadCache();
}
public static PaletteCache getInstance() {
if (sPaletteCache == null)
sPaletteCache = new PaletteCache();
return sPaletteCache;
}
private static void loadCache() {
// Load the HashMap from disk if present
}
public static int getVibrantColor(String itemName) {
return mCache.get(itemName);
}
public static void setColor(String itemName, int color) {
mCache.put(itemName, color);
}
}
对这种方法有任何批评吗?如果是这样,有什么替代方案?