在按下按钮之前,如何设置重复功能

时间:2011-06-17 19:34:16

标签: android button repeat

给出以下代码:

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;
            }
        });
    }
}

如何启动一个功能并将其设置为重复按钮,直到按下按钮终止操作。即使在按钮释放后,上面的代码也会重复。

3 个答案:

答案 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();