2012-01-27 74 views
1

如果我使用:觸摸按鍵無聲音

final Button btnNught = (Button) findViewById(R.id.night); 
    btnNught.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      // Perform action on click 
      btnNught.setPressed(true); 
     } 
    }); 

如果我按一下按鈕,我聽單擊聲音,但如果我使用:

btnNught.setOnTouchListener(new OnTouchListener() { 
     public boolean onTouch(View v, MotionEvent event) { 
      if (btnNught.isPressed()) { 
       btnNught.setPressed(false); 
       return true; 
      } 
      else { 
       btnNught.setPressed(true); 
       return false; 
      } 
     } 
    }); 

我不聽觸摸任何聲音。 我犯了什麼錯誤?

編輯: 我想創建兩種狀態的按鈕,如togglebutton:當然有兩種不同的顏色按下和不按下按鈕(普通淡灰色非按下,綠色按下時)。

在這種情況下(上圖),當我觸摸按鈕時,我不聽任何聲音,但是如果我使用onClick方法,我會聽到'咔嗒'聲。 當我使用onTouch方法時,如何獲得'點擊'或'觸摸'聲音?

回答

1

請問,在什麼條件下你可以到btnNught.setPressed(true);在第二個例子中?正如我所看到的,你根本無法按下按鈕。在行動下你消耗的動作,所以按鈕不會被按下。

編輯:在偵聽器的開始處放置一個斷點並將其輸入到按鈕使用的不同變體中。並檢查行爲。

+0

。按壓和'正常',非按壓狀態,有兩種不同的顏色。 – Kolesar 2012-01-27 21:42:55

+0

當你沒有聽到任何東西時它會被按下嗎?看看編輯答案。 – Gangnus 2012-01-27 21:44:40

+0

哦,還有一個問題:當它應該發出噪音?在更改按鈕狀態或更改爲按下或在所有按下狀態期間?請說明問題。 – Gangnus 2012-01-27 21:49:05

0

當你想播放聲音時,你的問題不是很清楚,但我回答你的問題,假設你想在發生Action_DOWN時播放它。如果你打算創建一個切換按鈕,你的代碼應該看起來像這樣

btnNught.setOnTouchListener(new OnTouchListener() { 
    public boolean onTouch(View v, MotionEvent event) { 
     if(event.getAction()!=MotionEvent.ACTION_UP ||   
       event.getAction()!=MotionEvent.ACTION_DOWN) 
     { 
      return false; 
     } 
     if(event.getAction()==MotionEvent.ACTION_DOWN) 
     { 
      btnNught.setPressed(true); 
      //Set whatever color you want to set 

     } 
     else 
     { 
      btnNught.setPressed(false); 
     } 
     return true; 
    } 
}); 
+0

我編輯了我的問題。我希望現在的問題恰恰是:) – Kolesar 2012-01-29 22:02:37

1

嘗試增加android:soundEffectsEnabled="true"<Button>標籤。

+1

和以前一樣。沒有聲音。 – Kolesar 2012-01-27 22:29:27

+0

你聽到其他應用程序的聲音嗎?它可以像音量級別設置一樣簡單嗎?如果設置不允許,應用程序無法發出聲音。 – 2012-01-27 23:33:43

+0

起初我認爲這可能是一個問題。但在其他應用程序中聽到聲音 – Kolesar 2012-01-29 22:01:50

0

繼線將播放節拍聲:

btnNught.playSoundEffect(SoundEffectConstants.CLICK); 
6

這樣做對我的作品:

btnNught.setSoundEffectsEnabled(true); 
btnNught.setOnTouchListener(new OnTouchListener() { 
    public boolean onTouch(View v, MotionEvent event) { 
     if(event.getAction()!=MotionEvent.ACTION_UP ||   
      event.getAction()!=MotionEvent.ACTION_DOWN) 
     { 
      return false; 
     } 
     if(event.getAction()==MotionEvent.ACTION_DOWN) 
     { 
      btnNught.playSoundEffect(SoundEffectConstants.CLICK); 
      //Set whatever color you want to set 
     } 
     else 
     { 

     } 
     return true; 
    } 
}); 
0

有兩種方式收聽聲音

1使用內置的聲音

Go to Settings -> Sound -> 
And do the following settings 

sound profile set **Normal** 
Touch sound set **ON** 
  1. 使用自定義音效

    發揮我要像爲ToglleButton創建按鈕有兩個狀態中定義的用戶的聲音