2014-02-10 55 views
0

我想我的ImageButton圖片在最後點擊後經過一段時間後才能更改。最後一次按鈕點擊後的延遲動作

ImageButton b = ... 
b.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
    b.removeCallbacks(null); 
    b.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
     b.setImageResource(android.R.drawable.ic_delete); 
     } 
    }, 1500); 
    } 
}); 

此代碼不起作用。刪除回調的行返回true,但不會刪除任何回調。如果我再次點擊按鈕,它會在第一次點擊1.5秒後改變圖像。

回答

1

試試這個嗎?

public void onClick(View v) { 
    b.removeCallbacks(clickRunnable); 
    b.postDelayed(clickRunnable, 1500); 
    } 


    Runnable clickRunnable = new Runnable() { 
     @Override 
     public void run() { 
     b.setImageResource(android.R.drawable.ic_delete); 
     } 
    }; 
0

removeCallbacks方法刪除(取消執行)以前發佈的runnable。你必須把相同的(Runnable接口)對象的removeCallbacks參數,如果你想停止執行:

_myRunnable = new Runnable() {...}; 
... 
b.removeCallbacks(_myRunnable); 
b.postDelayed(myRunnable, 1500); 
0

這樣可以很清楚:

定義處理程序,並運行的私人領域。這將使他們的可重複使用的所有按鈕點擊

onClick()
private Handler mHandler = new Handler(); 
private Runnable mClickRunnable = new Runnable() { 
     @Override 
     public void run() { 
     mInmageView.setImageResource(android.R.drawable.ic_delete); 
     } 
    }; 

mHandler.removeCallbacks(mClickRunnable); 
mHandler.postDelayed(mClickRunnable, 1500); 

第一行刪除以前的回調(我們不需要它們了)

第二行開始新的回調

相關問題