2017-02-25 1 views
0

목록보기에서 각 항목에 대해 다른 항목 이름에 대해 일부 이미지 (그리기 가능)를 표시해야합니다. 이름이 같으면 동일한 이미지를 표시합니다. 드로어 블은 특정적이고 시간을 들여야합니다 (원격 리소스가 필요함). 캐시 된 드로어 블을 캐시하고 캐시되지 않은 경우 새로 작성하는 것이 좋습니다. 일부 기사를 보았습니다. "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; 
} 

답변

1

당신은 당신의 목록보기에 캐시 드로어 블을 사용하려는 당신이 당신의 당김에() 돌연변이를 호출 할 수 있습니다 그것은 몇 가지 문제에 대해 걱정합니다. 이렇게하면 더 나은 이해를 얻을 수 있습니다. https://android-developers.googleblog.com/2009/05/drawable-mutations.html?m=1

+0

감사합니다. Piotr! 기사의 유일한 차이점은 목록에 각 목록 항목에 대한 새로운 drawable 인스턴스가 있음을 언급했습니다. 여러 항목이 동일한 드로어 블 인스턴스를 공유하는 경우 걱정할 사항이 있는지 확실하지 않습니다. – lannyf

+0

흠 나는 그것이 당신의 사건에 달려 있다고 생각합니다. 드로어 블을 수정하지 않으면 작동 할 수 있습니다. 나는 확신하기 위해 다양한 OS 버전에서 확인했다. –

관련 문제