Нет действительно встроенного способа сделать это. TransitionDrawable
не имеет функции анимации с бесконечным циклом. Самой простой рекомендацией будет использование Animation
(альфа, масштабирование, перевод и т. Д.) На View
, содержащем только один из ваших Drawable
s, если вы можете.
Довольно простым взломом было бы добавить Handler
и обратный вызов к вашему пользовательскому View
, удерживающему ваш TransitionDrawable
. Когда View
создан, для Handler
можно установить интервал перехода. View
также реализует Handler.Callback
, а внутри своего метода handleMessage(Message)
он вызовет reverseTransition(int)
для вашего TransitionDrawable
.
Грубый пример ниже:
public class myView extends View implements Handler.Callback {
private Handler mHandler = new Handler(this);
private int mDelay = 1000; // Delay in milliseconds.
private Runnable mEvent = new Runnable() {
public void run() {
mHandler.removeCallbacks(mEvent);
mHandler.postDelayed(mEvent, mDelay);
Message message = mHandler.obtainMessage();
mHandler.sendMessage(message);
}
};
public View(Context context) {
super(context);
// Set your background TransitionDrawable.
setBackgroundDrawable(...);
}
public handleMessage(Message message) {
TransitionDrawable drawable = (TransitionDrawable) getBackgroundDrawable();
drawable.reverseTransition(mDelay);
}
public void start() {
mHandler.post(mEvent);
}
public void stop() {
mHandler.removeCallbacks(mEvent);
}
}
Позвоните start()
, чтобы начать непрерывный переход, stop()
, чтобы остановить его. Это немного похоже на создание собственной анимации, но работает в крайнем случае.