Мне нужно сделать фоновую вспышку или мигать, меняя каждую секунду. Я написал этот код:Как сделать фоновый рисунок макета в андроиде?
int colours[]={0xff00ff00, 0xffff0000, 0xff0000ff,0xffffffff};
RelativeLayout fondo;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
fondo = (RelativeLayout) findViewById(R.id.fondo);
this.fondo.setBackgroundColor(colours[0]);
this.fondo.setOnTouchListener(this);
}
Вот метод onTouch:
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP) {
int i=1;
long delay= 1000;
long time = System.currentTimeMillis();
while(true) {
long time2 = System.currentTimeMillis();
long time3 = (time2 - time);
if (time3 > delay) {
this.fondo.setBackgroundColor(colours[i]);
Log.d("DEBUG", "EEEEEEEEEEEEEEEEEEEEEEEEEEEEE");
time = System.currentTimeMillis();
i++;
if (i >= colores.length)
i=0;
}
}
}
return true;
}
Моя проблема заключается в том, что я не могу изменить цвет фона каждый второй, но я могу написать Log.d (» DEBUG ") каждую секунду.
Попробовать аннулирует вид после установки цвета фона, увидеть, если он работает. – Wenhui
Вы получаете ANR? Возможно, вы захотите изучить использование Handler с периодическим запуском. Он будет ссылаться на поток пользовательского интерфейса, и вы можете настроить его, чтобы просто пропустить ваш массив с каждым проходом. Он также должен автоматически недействительно –
Благодарим вас за ответ так быстро. Я попробую. Я знаю, что могу делать это с помощью нитей. но я хотел попробовать с этим. Спасибо – croigsalvador