У меня есть список CardView
s, которые содержат Bitmap
s, которые возвращаются из сети или из LruCache
.Singleton instance of Palette Color cache
Я также запускаю операцию 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);
}
}
Любые критические замечания такого подхода? Если да, то какие альтернативы?
Можете ли вы привести пример того, как «enum' будет работать в« RecyclerView.Adapter <> »? – AndyRoid
Также не являются ли 'enum' s вообще плохой практикой на Android? – AndyRoid
Посмотрите раздел «Избегайте перечислений», это от кого-то, кто работает в команде Android UI. https://medium.com/google-developers/developing-for-android-ii-bb9a51f8c8b9 – AndyRoid