作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 OnTouchListener 有疑问。我创建了一个自定义按钮。此按钮与 onClick 事件 一起正常工作。但它不适用于 onTouch 事件
这是我的自定义按钮。我只想要按钮和按钮按下这两个选项。
<?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();
}
});
最佳答案
我自己又解决了我的问题。让我们解释一下;首先,我克隆了所有按钮,例如 btnPlay1 和 btnPlay1c但按钮 xml 彼此不同。区别仅在于 id 和自定义按钮 xml 文件。我使用了下面显示的 2 个自定义按钮 xml。
第一个自定义按钮mybutton1.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button"
android:state_pressed="true" />
<item android:drawable="@drawable/button"
android:state_focused="true" />
<item android:drawable="@drawable/button" />
</selector>
第二个自定义按钮mybutton1c.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button_pressed"
android:state_pressed="true" />
<item android:drawable="@drawable/button_pressed"
android:state_focused="true" />
<item android:drawable="@drawable/button_pressed" />
</selector>
还有我的按钮示例。 克隆按钮不可见。 (btnPlay2c)
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" >
<Button
android:id="@+id/btnPlay2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/mybutton1" />
<Button
android:id="@+id/btnPlay2c"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/mybutton1c"
android:visibility="gone" />
</FrameLayout>
最后,这是我的 java 文件。当我按下按钮时,会显示按钮克隆,当我未按下时,会显示普通按钮。就这样。
pl10.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int eventaction = event.getAction();
switch (eventaction) {
case MotionEvent.ACTION_DOWN:
n10=MediaPlayer.create(MainActivity.this, R.raw.audio7);
n10.start();
n10.setLooping(true);
///focus here\\
pl10c.setVisibility(View.VISIBLE);
return true;
case MotionEvent.ACTION_UP:
n10.stop();
n10.release();
//and here\\\
pl10c.setVisibility(View.INVISIBLE);
break;
}
return false;
}
});
这个解决方案可能很累,但它解决了问题。
关于android - 自定义按钮不适用于 OnTouchListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28927369/
我是一名优秀的程序员,十分优秀!