Я знаю, что этот вопрос старый, но я хотел бы помочь другим пользователям с другим возможным решением.
AnimationDrawable
является правильным способом, когда у вас есть более 2 изображений, но когда у вас есть только два изображения, вы также можете использовать TransitionDrawable
, как вы сказали. Я покажу вам, как это сделать.
В первый раз я буду использовать таймер в моем onCreate()
.
Timer MyTimerImage = new Timer();
Затем я создам класс MyTimerTask (в родительском классе Activity) для запуска собственного кода.
public class MyTimerTask extends TimerTask {
LinearLayout myIDLinearLayout= (LinearLayout) findViewById(R.id.myIDofLinearLayout);
TransitionDrawable MyTrans = (TransitionDrawable) myIDLinearLayout.getBackground();
int i = 0;
@Override
public void run() {
runOnUiThread(new Runnable(){
@Override
public void run() {
i++;
if (i%2==0) { //
MyTrans.startTransition(myTransitionTimeinms);
}else{
MyTrans.reverseTransition(myTransitionTimeinms);
}
}});
}
}
И, наконец, я создам переменную MyTimerTask для запуска моего таймера. Этот код идет ниже создания таймера ().
MyTimerTask MyTimer = new MyTimerTask();
MyTimerImage.schedule(MyTimer, myDelay, myPeriod);
В этом случае метод расписания имеет 3 параметра: первый указывает нашу задачу TimerTask, второй - задержку запуска TimerTask в мс, а третий - каждый период, когда мы хотим запустить код.
Не забудьте включить файл TransitionFile.xml в android:background
.
Я надеюсь, что это может кому-то помочь.