2013-01-06 21 views
9

Resmi, uygulamanın başlamasından 5 saniye sonra imageView içinde değiştirmek istiyorum.Android'deki gecikme eylemleri

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); 

    } 
} 

cevap

57

Bir Handler kullanabilirsiniz, örneğin: Sam yorumlarda söylediği gibi

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

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

}, 5000); // 5000ms delay 

, ayrıca (bu yapabilirdi

Bu

şimdiye kadar çalıştı kodudur tüm View s kendi işleyici) çünkü:

screen.postDelayed(new Runnable() { 

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

}, 5000); // 5000ms delay 

Bkz.

+1

Çalışır Tom Leese dediğim gibi Handler kullanmak veya Java Zamanlayıcı olabilir: Hatta gerekmez –

+3

Kabul D yeni bir Handler oluştur. Her Görünümün bir yerleşik vardır ve 'screen.post() 'veya' screen.postDelayed() 'ile erişebilirsiniz. – Sam

+0

@Sam screen.postDelayed() ?? saatini nasıl ayarlayabilirim? –

2

böyle parçacığı deneyebilirsiniz:

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

Sen çekicilik teşekkür gibi

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

Bu, GUI eylemleriyle çalışıyor mu? GUI eylemleri, belleğimde GUI iş parçacığı üzerinde çalıştırmak zorunda olduğundan. –

+0

Eğer TimerTask activity.runOnUiThread koşmak içine eklemek zorunda (yeni Runnable() { @Override public void run() { } }); – Anthone