2013-08-17 51 views
12

Tôi muốn biết nếu nó có thể sử dụng handler(). Postdelayed hai lần?Android: sử dụng handler post.delayed hai lần

Ý tôi là, tôi muốn tạo nút, khi nhấp vào nó thay đổi màu và ở trạng thái này 1 giây, sau đó, sau 1 giây nút khác thay đổi màu.

tôi đã tạo ra đoạn mã sau:

Trong OnClickListener:

btn3.setBackgroundColor(Color.WHITE); 
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 

     checkAnswer(); 
     waitAnswer(); 
     btnRsp3.setBackgroundResource(R.drawable.selector); 
     } 
    }, 1000); 

CheckAnswer:

public void CheckAnswer(){ 
     btn1.setBackgroundColor(Color.GREEN); 

    new Handler().postDelayed(new Runnable() { 
    @Override 
    public void run() { 
    } 
}, 500); 

btn1.setBackgroundResource(R.drawable.selector); 
} 

Tôi nghĩ vấn đề là trên CheckAnswer vì nó có vẻ nó không dừng lại trong bài đăng nàyThay đổi và bước đến waitAnswer.

Cảm ơn

Trả lời

20

Tại sao bạn mong đợi nó dừng lại khi đăng bàiDelayed? postDelayed đặt Runnable của bạn vào hàng đợi Handler Looper và trả về. Kể từ khi cả hai bộ xử lý được tạo ra trên looper đó, Runnable thứ hai được thực hiện sau khi một chấm dứt đầu tiên (cộng với bất cứ điều gì trái của sự chậm trễ 500 ms)

UPDATE:

Bạn cần một cái gì đó như thế

Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     btn1.setBackgroundColor(Color.GREEN); 
    } 
}, 1000); 
handler.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     btn1.setBackgroundResource(R.drawable.selector); 
    } 
}, 2000); 
+0

Cảm ơn bạn cho bạn câu trả lời, nhưng tôi không hiểu: nếu runnable thứ hai được thực hiện sau khi người đầu tiên chấm dứt lý do tại sao nó không thay đổi btn màu xanh lá cây như tôi mã trong lớp checkAnswer? Nó bỏ qua bước này không? – loading27

+0

Runnable thứ hai của bạn trống. checkAnswer thay đổi màu thành màu xanh lá cây, sau đó xếp hàng hình chữ nhật trống, sau đó đặt tài nguyên nền, vì vậy bạn sẽ không thấy màu xanh lá cây – msh

+0

Có, nhưng tôi nghĩ nếu tôi đặt màu thành xanh lục và tạo hàng đợi trống 500 ms, sau đó đặt lại nền, tôi thấy màu xanh lá cây 500 ms. – loading27

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