2015-02-10 69 views
0

我正在爲Android製作一個音樂應用程序,在這個應用程序中,我檢測到用戶完成的ontouch事件,使按下的按鍵響起,並且還改變了它們的顏色。我想模擬一些事件來顯示歌曲的音符。如何延遲模擬的觸摸事件?

我面臨的問題是每個觸摸事件之間沒有延遲,或者至少我不知道如何正確地做到這一點。你可以聽到兩個音符的聲音,但你看不到他們的顏色變化。

應該怎麼做?

這就是我爲了得到2個按鍵而測試過的。我也嘗試過使用ACTION_UP,但它沒有奏效。

//First key pressed 
piano.dispatchTouchEvent(pulse.obtain(SystemClock.upTimeMillis(),SystemClock.upTimeMillis() + 1000, pulse.ACTION_DOWN,0,0,8) 

//Second key pressed 
piano.dispatchTouchEvent(pulse.obtain(SystemClock.upTimeMillis(),SystemClock.upTimeMillis() + 1000, pulse.ACTION_DOWN,80,0,8) 

我沒有考慮同時觸摸2個音符的可能性,每個觸摸事件只有一個音符。

回答

0
class Press { 
    static final long PRESS_DELAY = 150; 

    private final Handler handler = new Handler(Looper.getMainLooper()); 

    private final View view; 

    Press(View view) { 
    this.view = view; 
    } 

    void press() { 
    if (view.getVisibility() != View.VISIBLE) { 
     return; 
    } 
    view.setPressed(true); 
    view.invalidate(); 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
     view.setPressed(false); 
     view.invalidate(); 
     } 
    }, PRESS_DELAY); 
    } 
} 

然後,

new Press(myButton).press();