Мне нужно заменить фразы текста в 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 () в своей деятельности, который будет вызываться, когда Android фокусирует ваше окно.
Поскольку изображения добавляются динамически, я не думаю, что это имеет какое-либо отношение к onCreate ().
Так что, я думаю, я называю мой .start()
, когда мой ничья is not yet fully attached to the window
, но где / когда / как должен Я называю это?
Заранее спасибо!