给出以下代码:
package com.buttonsound;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
public class buttonsound extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final MediaPlayer mpButton=MediaPlayer.create(this,R.raw.button_click);
Button buttonsound=(Button) findViewById(R.id.button1);
buttonsound.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent me) {
while(me.getAction()==MotionEvent.ACTION_DOWN)
{
mpButton.start();
}
return false;
}
});
}
}
如何启动一个功能并将其设置为重复按钮,直到按下按钮终止操作。即使在按钮释放后,上面的代码也会重复。
答案 0 :(得分:4)
你永远不会打电话给stop()
,当然它会继续玩。你的while循环多次调用start()
,你不应该这样做。可以把它想象成任何其他媒体播放器 - 你不会不断按Play播放整个音轨,它会一直持续到你说不然。
尝试这样的事情:
public boolean onTouch(View v, MotionEvent me) {
switch(me.getAction()) {
case MotionEvent.ACTION_DOWN:
if(!mpButton.isPlaying()) mpButton.start();
break;
case MotionEvent.ACTION_UP:
if(mpButton.isPlaying()) mpButton.stop();
break;
}
}
编辑:顺便说一下,命名一个MediaPlayer mpButton
只是要求混淆;只是在说'。 ;)
答案 1 :(得分:0)
Boolean btnIsPressed = false;
Button btn = (Button) findViewById(R.id.btn);
并添加一个线程,并在方法运行中添加以下代码:
@Override
public void run(){
while(!btnIsPressed){
myfunction();
}
}
最后,在你的方法onCreate中,添加一个监听器,将你的布尔值改为true,如下所示:
btn.addOnClickListener( new OnClickListener(){
@Overrride
public void onClick(View v){
btnIsPressed = true;
}
});
希望有所帮助
答案 2 :(得分:0)
如果你正在谈论如何在媒体播放器中重复一些事情
mediaPlayer.seekTo(0);
mediaPlayer.start();