Вам не нужно ImageView
.
Если ваша анимация XML Drawable
, вы можете загрузить ее непосредственно из Resources
в переменную AnimationDrawable
:
Resources res = context.getResources();
AnimationDrawable animation = (AnimationDrawable)res.getDrawable(R.drawable.anim);
Затем установить границы и нарисовать на холсте:
animation.setBounds(left, top, right, bottom);
animation.draw(canvas);
Вам также необходимо вручную настроить анимацию для запуска в следующий запланированный интервал.Это может быть достигнуто путем создания нового обратного вызова с использованием animation.setCallback
, затем создания экземпляра android.os.Handler
и использования метода handler.postAtTime
для добавления следующего кадра анимации в текущую очередь сообщений Thread
.
animation.setCallback(new Callback() {
@Override
public void unscheduleDrawable(Drawable who, Runnable what) {
return;
}
@Override
public void scheduleDrawable(Drawable who, Runnable what, long when) {
//Schedules a message to be posted to the thread that contains the animation
//at the next interval.
//Required for the animation to run.
Handler h = new Handler();
h.postAtTime(what, when);
}
@Override
public void invalidateDrawable(Drawable who) {
return;
}
});
animation.start();