Java 如何从onClick更改为onTouch方法?
我正在创建音乐应用程序,我需要从onClick改为onTouch方法,这样我就可以在按下按钮的那一刻听到声音,而不仅仅是在松开按钮的时候。我不清楚我需要添加和更改什么 MainActivity.java: 活动\u主XML:Java 如何从onClick更改为onTouch方法?,java,android,Java,Android,我正在创建音乐应用程序,我需要从onClick改为onTouch方法,这样我就可以在按下按钮的那一刻听到声音,而不仅仅是在松开按钮的时候。我不清楚我需要添加和更改什么 MainActivity.java: 活动\u主XML: 我试着从互联网上仿效了很多例子,但结果总是无效。步骤1:删除android:onClick属性,以便 <Button android:id="@+id/btn5" android:layout_width="76dp" android:layo
我试着从互联网上仿效了很多例子,但结果总是无效。步骤1:删除android:onClick属性,以便
<Button
android:id="@+id/btn5"
android:layout_width="76dp"
android:layout_height="69dp"
android:background="@android:color/holo_red_dark"
android:onClick="playD" />
首先用其中一个按钮尝试,当它工作时,继续下一个按钮
还有很多其他的方法,例如你可以删除这个方法
public void playD(View v){
mSoundPool.play(btn5,1,1,0,0,1);
}
而是在onCreate中使用此选项:
findViewById(R.id.btn5).setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction()==MotionEvent.ACTION_DOWN) mSoundPool.play(btn5,1,1,0,0,1);
return false;
}
});
@Pratik_Butani指出了哪一个更复杂,但稍后当您对其有了更多的了解时,可以查看。欢迎来到StackOverflow!既然问题是关于Java/Android的,你能删除JavaScript标签吗?你需要把你的res/layout/activity_main.xml也发出来,先生@雅各布:你想改变什么?如果您有充分的理由,最好从XML中删除onClick并定义onTouchListener for all按钮。@PratikButani因为我想在按下按钮时播放声音,而不仅仅是在释放按钮时,onClick不允许我这样做。我尝试了你的建议,但现在显示android:onTouchListener是一个未知属性。很好,我使用了第一种方法,它可以工作!但现在我面临另一个问题,当按下按钮时,无休止的声音循环垃圾,当我释放按钮时,仍然会再次播放声音效果。我的目标是每次触球打1次。参见。要检查我是否按下、移动或释放动作,需要添加:if event.getAction==MotionEvent.action\u down。顺便说一句,如果你将来需要帮助,你应该接受答案,这样人们就会看到你重视他们的帮助
<Button
android:id="@+id/btn5"
android:layout_width="76dp"
android:layout_height="69dp"
android:background="@android:color/holo_red_dark" />
findViewById(R.id.btn5).setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction()==MotionEvent.ACTION_DOWN) playD(v);
return false;
}
});
public void playD(View v){
mSoundPool.play(btn5,1,1,0,0,1);
}
findViewById(R.id.btn5).setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction()==MotionEvent.ACTION_DOWN) mSoundPool.play(btn5,1,1,0,0,1);
return false;
}
});