在Android中按下按钮时触发事件

cod*_*man 29 android button

我有以下Android代码,一旦按下按钮就可以播放声音:

Button SoundButton2 = (Button)findViewById(R.id.sound2);
        SoundButton2.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {
        mSoundManager.playSound(2);

    }
});
Run Code Online (Sandbox Code Playgroud)

我的问题是我希望在按下按钮(触摸下来)时立即播放声音,而不是在释放声音时(触摸起来).有关如何实现这一目标的任何想法?

Mac*_*rse 34

你应该这样做:b是按钮.

b.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_DOWN ) {
                    mSoundManager.playSound(2);
                    return true;
                }

                return false;
            }
        });
Run Code Online (Sandbox Code Playgroud)

  • 很好,在导入MotionEvent并使用此行后让它工作:if(event.getAction()== MotionEvent.ACTION_DOWN){ (5认同)
  • 这两个答案中提供的代码似乎都是正确的.添加导入到`android.view.MotionEvent`.这是"OnTouchListener"的文档:http://developer.android.com/reference/android/view/View.OnTouchListener.html (3认同)

Pet*_*rdk 22

也许用OnTouchListener?我猜MotionEvent会有一些方法来记录对象的触摸.

   button.setOnTouchListener(new OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
     // TODO Auto-generated method stub
     return false;
    }
   }))
Run Code Online (Sandbox Code Playgroud)