Мне нужно заменить фразы текста в изображениях, а затем добавить это в TextView. Для обычных Drawables это не проблема, но когда Drawable является AnimationDrawable, я не знаю, где и когда нужно позвонить .start();
.Динамически загружать AnimationDrawable в TextView
Это, как я добавить текст в 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).
В документации говорится:
Важно отметить, что метод запуска() вызывалась на AnimationDrawable нельзя назвать при методе OnCreate() вашей деятельности, потому что AnimationDrawable еще не полностью прикрепленный к окну. Если вы хотите немедленно воспроизвести анимацию, не требуя взаимодействия, вы можете вызвать ее из метода onWindowFocusChanged() в своей Activity, который вызывается, когда Android переключит ваше окно в фокус.
Поскольку изображения добавляются динамически, я не думаю, что это имеет какое-либо отношение к onCreate(). Так что я догадываюсь, что я позвоню своему .start()
, когда мой номер is not yet fully attached to the window
, но где/когда/как должен Я называю это?
Заранее благодарен!
после установки drawbales вызывать 'textView.bringToFront()', а затем вызывать '.start()' для анимации .. – MKJParekh