【发布时间】:2015-05-09 17:53:10
【问题描述】:
OnTouchListener 有问题。我创建了一个自定义按钮。此按钮可与 onClick 事件 一起正常工作。但它不适用于 onTouch 事件
这是我的自定义按钮。我只想要两个选项,只是 button 和 button_pressed。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button2_pressed"
android:state_pressed="true" />
<item android:drawable="@drawable/button2_pressed"
android:state_focused="true" />
<item android:drawable="@drawable/button2" />
这是我的 Ontouch 按钮代码。当我按住按钮时,音频正在播放和循环。当我释放按钮音频停止。此代码可以正常工作,但不适用于我的自定义按钮。因此,当我将手指放在此按钮上时,然后当我松开按钮或按住按钮时,在每种情况下,此按钮都只显示 button2.png(在自定义按钮代码上方)
pl6.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int eventaction = event.getAction();
switch (eventaction) {
case MotionEvent.ACTION_DOWN:
n6=MediaPlayer.create(MainActivity.this, R.raw.audio4);
n6.start();
n6.setLooping(true);
return true;
case MotionEvent.ACTION_UP:
n6.stop();
n6.release();
break;
}
return false;
}
});
这是我的另一个按钮。这是正确的工作。此按钮是一个普通按钮,只需单击即可播放。 当我按下按钮时 button2_pressed 出现,当我未按下 button2 时出现。
play2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
stopPlaying2();
m2=MediaPlayer.create(MainActivity.this, R.raw.sound2);
m2.start();
}
});
【问题讨论】:
-
按下按钮后,它将成为焦点。我猜您的选择器中的第二项总是解析为 true,因此
button2_pressed会一直显示。您可以尝试注释掉该特定项目以确认。 -
button2_pressed 不会出现在此事件中。只有button2出现。此自定义按钮代码与 onclick 事件一起使用。我在上面的文本中添加了我的其他代码。但它不适用于 onTouch 事件,自定义按钮代码可能会有所不同,但我不知道。
标签: android android-custom-view motionevent ontouch