Tôi cần phải thay thế các cụm từ văn bản bằng một hình ảnh và sau đó gắn thêm vào một TextView. Đối với Drawables thường xuyên này là không có vấn đề, nhưng khi Drawable là một AnimationDrawable tôi không biết ở đâu và khi nào để gọi .start();
.Tự động tải một AnimationDrawable trong một TextView
Đây là cách tôi thêm văn bản vào TextView:
textview.append(Html.fromHtml(textWithHtmlImgTags, imagegetter, null));
Các thẻ hình ảnh trong textWithHtmlImgTags được thay thế bằng 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 tôi được thêm vào, nhưng họ không được hoạt hình (chúng bị mắc kẹt trên khung 1).
Trong tài liệu hướng dẫn nó nói:
Điều quan trọng cần lưu ý là start() phương pháp kêu gọi AnimationDrawable không thể được gọi trong phương pháp onCreate() của hoạt động của bạn, bởi vì AnimationDrawable chưa đầy đủ gắn liền với cửa sổ. Nếu bạn muốn phát hoạt ảnh ngay lập tức, mà không cần tương tác, thì bạn có thể muốn gọi nó từ phương thức onWindowFocusChanged() trong Hoạt động của bạn, sẽ được gọi khi Android đưa cửa sổ của bạn vào tiêu điểm.
Vì hình ảnh được thêm động nên tôi không nghĩ rằng nó có liên quan gì đến onCreate(). Vì vậy, tôi đoán tôi gọi số .start()
khi có thể draw is not yet fully attached to the window
, nhưng ở đâu/khi nào/như thế nào nên Tôi gọi nó là?
Cảm ơn trước!
sau khi thiết lập drawbales gọi 'textView.bringToFront()' và sau đó gọi '.start()' để animate .. – MKJParekh