Изменить фон через определенный интервал - PullRequest
1 голос
/ 28 мая 2011

Мне нужно менять фоновое изображение каждые 30 секунд, но я не получаю правильный результат

Я пытался с потоком и TimerTask. но нет работы. У меня есть изображения port1, port2 ... и т. Д.

В TimerTask фон исчез.

class Task1 extends TimerTask {
    public void run() {
        System.out.println("Checking a");
        Random r = new Random();
        int i = r.nextInt(3) + 1;
        rl.setBackgroundResource(getResources().getIdentifier(
                    "port" + i, "drawable","com.samcom.breakingdowncd"));

    }
}

Timer timerBackground = new Timer();
timerBackground.scheduleAtFixedRate(new Task1(), 0, 30000);

Это не работает, любая помощь будет оценена. Спасибо

Ответы [ 2 ]

3 голосов
/ 28 мая 2011

используйте это, это работает

    private static final long GET_DATA_INTERVAL = 1000;
    int images[] = {R.drawable.cloud1,R.drawable.cloud2};
    int index = 0;
    ImageView img;
    Handler hand = new Handler();

    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.main);
        img = (ImageView) findViewById(R.id.image);
        hand.postDelayed(run, GET_DATA_INTERVAL);
    }

    Runnable run = new Runnable() {
        @Override
        public void run() {
            img.setBackgroundDrawable(getResources().getDrawable(images[index++]));
            if (index == images.length)
                index = 0;
            hand.postDelayed(run, GET_DATA_INTERVAL);
        }
    };

XML-код:

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/line">
    <ImageView 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/image"
    />
</LinearLayout>
0 голосов
/ 24 октября 2013

Попробуйте это:

Runnable run = new Runnable() {
@Override
public void run() {
if (index < images.length){
    img.setBackgroundDrawable(getResources().getDrawable(images[index++]));}
else{
  index = 0;
   }
   hand.postDelayed(run, GET_DATA_INTERVAL);
   }
  };

Это правильно!

...