【发布时间】:2017-02-25 19:37:02
【问题描述】:
在列表视图中,对于每个项目,它需要为不同的项目名称显示一些图像(可绘制)。如果名称相同,则显示相同的图像。 drawable 是特定的,并且需要一些时间来制作它(需要远程资源)。 所以想也许缓存可绘制对象,如果它没有被缓存,则只构建新的。 看到一些文章“ANDROID 可绘制实例——不要共享它们!” http://loseyourmarbles.co/2013/09/android-drawable-instances-dont-share/,
这里还需要为drawable设置动画。但是测试似乎没有看到不良行为(可能没有经过足够的测试)?
那么有没有人有过类似的需求并且体验过一个drawable实例是否可以在多个ImageView上使用呢?这种方法是加快列表视图的正确方法吗?
或者一个drawable实例可以用在多个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;
}
【问题讨论】:
标签: android caching android-imageview android-drawable