Есть ли способ автоматически отображать цвета с интервалом один за другим на экране активности в приложении для Android - PullRequest
0 голосов
/ 29 ноября 2011

Я хочу отображать 3 цвета в макете экрана моей активности без какого-либо взаимодействия с пользователем с временным интервалом.например, каждые 3 секунды один цвет должен отображаться на экране моей активности.Я пытался с Thread.sleep ();Последний цвет отображается только после долгого сна.

    screenLayout=(LinearLayout)findViewById(R.id.screenLayout);  

    screenLayout.setBackgroundColor(Color.RED);
    Log.e("","RED COLOR DISPLAYING..");
    try {
        Thread.sleep(7000);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


    screenLayout.setBackgroundColor(Color.GREEN);
    Log.e("","GREEN COLOR DISPLAYING..");

    try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();

    }

    screenLayout.setBackgroundColor(Color.BLUE);

, но он не работает.Может ли кто-нибудь, пожалуйста, скажите мне, как это сделать.

1 Ответ

0 голосов
/ 29 ноября 2011

вы можете сделать так, используя Handler и Runnable объект

private Handler handler;
private LinearLayout linear;
private int i= 0;
private Runnable runnable = new Runnable(){

    @Override
    public void run() {
        if(i>2)
            i=0;
        else
            i++;
        switch(i){
        case 0:
            linear.setBackgroundColor(Color.BLACK);
            break;
        case 1:
            linear.setBackgroundColor(Color.RED);
            break;
        case 2:
            linear.setBackgroundColor(Color.GREEN);
            break;
        }

        handler.postDelayed(runnable, 3000);
    }

};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.test7);
    linear = (LinearLayout)findViewById(R.id.main_linear);
    linear.setBackgroundColor(Color.BLACK);
    handler = new Handler();
    handler.post(runnable);
}

Это только пример, но вы можете реализовать из этого примера

...