Android:onKeyUp和onKeyDown?

时间:2011-03-08 19:39:38

标签: android

我无法理解onKeyUp和onKeyDown ......
我有一个类似于带有图像按钮呈现的DialPad的应用程序。每次单击按钮时,都会播放声音,例如,如果单击图像按钮0,则会播放声音为“零”的声音,并且在单击期间,图像按钮背景会发生变化。
以下是图像按钮通过屏幕点击后如何工作的示例...

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并让图像按钮在单击期间切换背景???

1 个答案:

答案 0 :(得分:0)

使用ToggleButton代替图像按钮。 http://developer.android.com/reference/android/widget/ToggleButton.html

在源代码中,您可以使用ToggleButton的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>