在列表视图中,对于每个项目,它需要显示不同项目名称的一些图像(可绘制)。如果名称相同,则显示相同的图像。 drawable是特定的,并且花费一些时间来制作它(需要远程资源)。 所以想想可能缓存drawable并且只有在没有缓存时才构建新的drawable。 看到一些文章" ANDROID DRAWABLE INSTANCES - 不要分享他们!" http://loseyourmarbles.co/2013/09/android-drawable-instances-dont-share/,
这里还需要为drawable设置动画。但测试似乎没有看到不良行为(可能没有足够的测试)?
所以任何人都有类似的要求,并且经验是否可以在多个ImageView上使用一个可绘制实例?这种方法是加速列表视图的正确方法吗?
或者可以在多个imageView上使用一个可绘制实例吗?
HashMap<String, Drawable> mNameToDrawnable = new HashMap<>();
public Drawable getDrawable(Context context, String displayName){
Drawable cachedD = mNameToDrawnable.get(displayName);
if (cachedD != null) {
return cachedD;
}
Drawnable d = makeDrawable(displayName); //new Drawable(context.getResources());, etc ……
d.setDecodeDimensions(100, 100);
mNameToDrawnable.put(displayName, d);
return d;
}
答案 0 :(得分:1)
如果你想在listview中使用缓存的drawable并且你担心它的一些问题,你可能想在你的drawable上调用mutate()。这可能会让您更好地理解:https://android-developers.googleblog.com/2009/05/drawable-mutations.html?m=1