목록보기에서 각 항목에 대해 다른 항목 이름에 대해 일부 이미지 (그리기 가능)를 표시해야합니다. 이름이 같으면 동일한 이미지를 표시합니다. 드로어 블은 특정적이고 시간을 들여야합니다 (원격 리소스가 필요함). 캐시 된 드로어 블을 캐시하고 캐시되지 않은 경우 새로 작성하는 것이 좋습니다. 일부 기사를 보았습니다. "ANDROID DRAWABLE INSTANCES - 공유하지 마세요!" http://loseyourmarbles.co/2013/09/android-drawable-instances-dont-share/,한 drawable 인스턴스를 여러 imageView에서 사용할 수 있습니까?
그리고 드로어 블을 애니메이션 처리해야합니다. 그러나 테스트는 나쁜 행동을 보지 못하는 것으로 보입니다 (아마도 충분히 테스트되지 않았을 수도 있습니다)?
누구나 유사한 요구 사항을 갖고 있으며 하나의 드로어 블 인스턴스가 여러 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;
}
감사합니다. Piotr! 기사의 유일한 차이점은 목록에 각 목록 항목에 대한 새로운 drawable 인스턴스가 있음을 언급했습니다. 여러 항목이 동일한 드로어 블 인스턴스를 공유하는 경우 걱정할 사항이 있는지 확실하지 않습니다. – lannyf
흠 나는 그것이 당신의 사건에 달려 있다고 생각합니다. 드로어 블을 수정하지 않으면 작동 할 수 있습니다. 나는 확신하기 위해 다양한 OS 버전에서 확인했다. –