Динамически загружать AnimationDrawable в TextView

Мне нужно заменить фразы текста в a изображениями, а затем добавить их в TextView. Для обычных Drawables это не проблема, но когда Drawable является AnimationDrawable, я не знаю, где и когда вызывать .start (); .

Вот как я добавляю текст в TextView:

textview.append(Html.fromHtml(textWithHtmlImgTags, imagegetter, null));

Теги изображений в textWithHtmlImgTags заменяются с помощью imagegetter:

new ImageGetter()
{
    @Override
    public Drawable getDrawable(String source) {

        if(source.endsWith("_ani"))
        {
            Log.i("cmv", "This is an animated drawable.");

            AnimationDrawable dra = (AnimationDrawable)res.getDrawable(sRes.get(source));
            dra.setBounds(0, 0, dra.getIntrinsicWidth(), dra.getIntrinsicHeight());
            dra.start(); // This doesn't work..

            return dra;
        }

        Drawable dr = res.getDrawable(sRes.get(source));
        dr.setBounds(0, 0, dr.getIntrinsicWidth(), dr.getIntrinsicHeight());
        return dr;
    }

};

Мои AnimationDrawables добавляются, но они не анимированы (они застревают в кадре 1) .

В документации говорится:

Важно отметить, что метод start (), вызываемый AnimationDrawable, не может быть вызван во время метода onCreate () вашего Activity, потому что AnimationDrawable еще не полностью прикреплен к окну. .Если вы хотите воспроизвести анимацию немедленно, не требуя взаимодействия, вы можете вызвать ее из метода onWindowFocusChanged () в своей Activity, который будет вызываться, когда Android переведет ваше окно в фокус.

Поскольку изображения добавляются динамически, я не думаю, что это имеет какое-либо отношение к onCreate (). Итак, я предполагаю, что я вызываю свой .start () , когда мой drawable еще не полностью прикреплен к окну , но где / когда / как должен я называю это ?

Заранее спасибо!

8
задан T.S. 23 February 2012 в 17:58
поделиться