2011-12-03 16 views
13

Tengo problemas para hacer que mi programa duerma Lo que intento hacer es cuando se presiona btnStart primero, al azar, establezco las imágenes en 12 ImageButtons Luego quiero que se detenga durante 5 segundos y luego cambie el primero ImageButton a otra imagenFunción de suspensión en el programa Android

Mi código es el siguiente, en este momento se detiene de inmediato cuando se pulsa el botón ...

 btnStart.setOnClickListener(new View.OnClickListener() { 
     @Override 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      Collections.shuffle(pic); 
      int time=1; 
      press=true; 

      pic.get(0).setImageDrawable(getResources().getDrawable(R.drawable.memgreen)); 
      pic.get(1).setImageDrawable(getResources().getDrawable(R.drawable.memgreen)); 
      pic.get(2).setImageDrawable(getResources().getDrawable(R.drawable.memred)); 
      pic.get(3).setImageDrawable(getResources().getDrawable(R.drawable.memred)); 
      pic.get(4).setImageDrawable(getResources().getDrawable(R.drawable.memblue)); 
      pic.get(5).setImageDrawable(getResources().getDrawable(R.drawable.memblue)); 
      pic.get(6).setImageDrawable(getResources().getDrawable(R.drawable.memwhite)); 
      pic.get(7).setImageDrawable(getResources().getDrawable(R.drawable.memwhite)); 
      pic.get(8).setImageDrawable(getResources().getDrawable(R.drawable.mempurple)); 
      pic.get(9).setImageDrawable(getResources().getDrawable(R.drawable.mempurple)); 
      pic.get(10).setImageDrawable(getResources().getDrawable(R.drawable.memyellow)); 
      pic.get(11).setImageDrawable(getResources().getDrawable(R.drawable.memyellow)); 

      try { 
       Thread.sleep(5000); 

       pic.get(0).setImageDrawable(getResources().getDrawable(R.drawable.coin)); 

      } catch (InterruptedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
    } 
    }); 
+0

¿Y cuál es el problema? – GETah

Respuesta

22

Bueno, si desea que la interfaz de usuario para seguir respondiendo que no puede bloquear el hilo de UI con Thread.sleep allí.

Crea un nuevo hilo, luego duerme. Después de la suspensión, ejecute el método para cambiar la vista dibujable en el subproceso UI

new Thread(new Runnable() { 
    @Override 
    public void run() { 
     try { 
      Thread.sleep(5000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
     runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       pic.get(0).setImageDrawable(getResources().getDrawable(R.drawable.coin)); 
      } 
     }); 
    } 
}).start(); 
+2

O use AsyncTask: http://android-developers.blogspot.com/2009/05/painless-threading.html –

+0

¡Gracias! soy nuevo en esto, pero tiene perfecto sentido. funciona ahora :) – Fredkr

Cuestiones relacionadas