2017-05-07 46 views
0

实现一个键停止声音我在这里很新的,我是那种在java中一个新的。我所有关于代码的知识都基于我在web上为我的项目找到的东西。所以一方面我知道另一方面,一些困难的东西,我不知道一个简单的事情。现在我陷入了这种情况。如何发挥和利用的Soundpool

我有按钮与循环声音我想要做的是当我触摸按钮它应该改变图像上“button_prees”当我释放按钮时,它应该播放声音,并改变图像上的“button_on”所以那一刻代码下面的工作很好,但现在我试图做倒序。你触摸相同的按钮,它改变形象的“button_prees2”当您松开按钮后,除应立即停止播放声音,改变对“button_off”

如何在下面的代码实现这个形象?

final Button b1 = (Button) findViewById(R.id.button1); 
     b1.setOnTouchListener(new View.OnTouchListener() { 
      @Override 
      public boolean onTouch(View view, MotionEvent motionEvent) { 
       switch (motionEvent.getAction()){ 
        case MotionEvent.ACTION_DOWN: 


         b1.setBackgroundResource(R.drawable.button_prees); 

         break; 

        case MotionEvent.ACTION_MOVE: 

         break; 

        case MotionEvent.ACTION_UP: 


         myS.play(s1I, 1, 1, 1, -1, 1); 

         b1.setBackgroundResource(R.drawable.button_on); 

         break; 
       } 
       return true; 
      } 
     }); 

回答

0

您可以使用布尔值作为Button状态的标志。简单地说,基本上:调用setSoundsOn(...)否则你的标签,最终可能会说的话是不是以前

boolean soundsOn = false; 
public void setSoundsOn(boolean soundsOn){ 
    this.soundsOn = soundsOn; 
} 

public boolean isSoundsOn(){ 
    return soundsOn; 
} 
... 

// Then for your Button listener: 
onTouch(...) 
if (!isSoundsOn){ 
    // Your above above code to change resources, start playing 
    // EXCEPT 
    case MotionEvent.ACTION_UP: 
    ... 
    setSoundsOn(true); 
    ... 
}else{ 
    // Code to stop etc. 
    // INCLUDING 
    case MotionEvent.ACTION_UP: 
    ... 
    setSoundsOn(false); 
    ... 
} 
... 

理想情况下,你应该确保声音已成功启动/停止。希望这有助于...