2013-01-06 16 views
9

Chcę zmienić zdjęcie w imageView po 5 sekundach od rozpoczęcia aplikacji.Opóźnienie działania w Androidzie

Jest to kod, który próbowałem dotąd:

public class MainActivity extends Activity { 
ImageView screen; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    screen=(ImageView)findViewById(R.id.imageView1); 

    screen.setImageResource(R.drawable.ic_launcher); 

    } 
} 

Odpowiedz

57

Można użyć Handler, takich jak:

Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 

    @Override 
    public void run() { 
     // change image 
    } 

}, 5000); // 5000ms delay 

Jak Sam mówi w komentarzach, można też to zrobić (ponieważ wszystkie View s mają własne obsługi):

screen.postDelayed(new Runnable() { 

    @Override 
    public void run() { 
     // change image 
    } 

}, 5000); // 5000ms delay 

Zobacz Handler Documentation.

+1

działa jak urok dzięki: D Zebrane –

+3

Nie trzeba nawet utwórz nowy Handler. Każdy widok ma jeden wbudowany i dostęp do niego za pomocą 'screen.post()' lub 'screen.postDelayed()'. – Sam

+0

@ Jak ustawić czas w screen.postDelayed() ?? –

2

można spróbować wątek tak:

new Thread(){ 
     public void run(){ 
      //sleep(5000); 
      //refreshSthHere(); 
     } 
    }.start(); 
0

Można użyć Handler jak powiedział Tom Leese lub Java czasowy

new Timer().schedule(new TimerTask() {   
    @Override 
    public void run() { 
     // this code will be executed after 2 seconds  
    } 
}, 2000); 
+0

Czy to działa z działaniami GUI? Ponieważ działania GUI muszą być uruchamiane w wątku GUI w mojej pamięci. –

+0

trzeba dodać wewnątrz przebiegu TimerTask activity.runOnUiThread (nowa Runnable() { @Override public void run() {} }); – Anthone