2011-03-08 55 views
0

我無法理解onKeyUp和onKeyDown ...
我有一個應用程序,它類似於一個帶有imagebuttons呈現的撥號盤。每次單擊一個按鈕時會播放一個聲音,例如,如果單擊圖像按鈕0,將播放一個聲音爲「零」的聲音,並在點擊過程中更改圖像按鈕背景。
這裏有一個如何時,其點擊直通屏幕上的ImageButton工作的例子...Android:onKeyUp和onKeyDown?

private synchronized void playSound(int tone) { 
    if(mp != null) { 
     mp.stop(); 
     mp.release(); 

    } 
    mp = MediaPlayer.create(this.getApplicationContext(), tone); 
    mp.start(); 
} 

private void ButtonClickSound() { 
    ImageButton one = (ImageButton) findViewById(R.id.btnOne); 
    one.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      playSound(R.raw.mamacita_one); 
     } 
    }); 
} 

現在我的onkeydown方法是這樣的:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent ev) { 

    switch (keyCode) { 
    case KeyEvent.KEYCODE_0: 
     playSound(R.raw.mamacita_zero);   
     return true; 
    } 
} 

該按鈕的XML看起來是這樣的:

<?xml version="1.0" encoding="utf-8"?> 

<item 
    android:state_pressed="true" 
    android:drawable="@drawable/green0" /> <!-- pressed --> 

<item android:drawable="@drawable/blue0" /> <!-- default --> 

我的問題是如何執行的onkeyup,讓點擊期間的ImageButton開關背景???

回答

0

使用ToggleButton而不是圖像按鈕。 http://developer.android.com/reference/android/widget/ToggleButton.html

在源代碼中,你可以使用切換按鈕的器isChecked()屬性來播放聲音

更改XML按鈕

<selector 
xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:drawable="@drawable/greendot" 
     android:state_checked="true" /> 
<item android:drawable="@drawable/reddot" /> 
</selector>