2011-12-03 44 views
13

Có một số vấn đề khiến chương trình của tôi ngủ Điều gì tôi đang cố gắng thực hiện là khi btnStart được nhấn linh hoạt đặt hình ảnh ngẫu nhiên thành 12 ImageButtons Sau đó tôi muốn tạm dừng trong 5 giây và sau đó thay đổi ImageButton để hình ảnh khácChức năng ngủ trong chương trình android

mã của tôi trông như thế này, ngay bây giờ nó dừng lại ngay lập tức khi nút được nhấ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

Và vấn đề là gì? – GETah

Trả lời

22

Vâng, nếu bạn muốn giao diện người dùng để duy trì đáp ứng bạn không thể khối chuỗi giao diện người dùng với Thread.sleep ở đó.

Tạo chủ đề mới rồi ngủ. Sau khi ngủ, hãy chạy phương pháp để thay đổi chế độ xem có thể vẽ trên chuỗi giao diện người dùng

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

Hoặc sử dụng AsyncTask: http://android-developers.blogspot.com/2009/05/painless-threading.html –

+0

Cảm ơn! im mới này nhưng nó làm cho cảm giác hoàn hảo. hoạt động ngay bây giờ :) – Fredkr

Các vấn đề liên quan