2017-10-29 51 views
0

我有兩個buttons,它們以編程方式編碼(我沒有XML文件)。我正在嘗試切換背景onClick,但它不會切換。ImageButton背景不能以編程方式切換

This不能幫助我,因爲它已被棄用,並且this不起作用。我知道如何處理XML,但正如我所說的,我沒有。如何正確地在點擊後來回切換ImageButton背景?當我點擊buttons時,背景會發生變化,但是會保持這種狀態直到我再次單擊它。我希望它立即回到原來的狀態。

實例化的buttons(在兩者之間大量的代碼只是顯示相關button代碼。):

static final int leftFireButtonID = 3; 
static final int rightFireButtonID = 4; 

private boolean isLeftButtonClicked = false; 
private boolean isRightButtonClicked = false; 

leftFireButton = new ImageButton(this); 
rightFireButton = new ImageButton(this); 

leftFireButton.setImageResource(R.drawable.red_button); 
rightFireButton.setImageResource(R.drawable.red_button); 

代碼聽衆:

leftFireButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      soundPool.play(soundID,1.0f,0.5f,1,0,1.0f); //Pew pew gunfire 

      if(view.getId() == leftFireButtonID) { 
       isLeftButtonClicked = !isLeftButtonClicked; 
       view.setBackgroundResource(isLeftButtonClicked ? R.drawable.red_button_pressed : R.drawable.red_button); //stays...needs to change back 
      } 
     } 
    }); 
    rightFireButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      soundPool.play(soundID, 0.5f, 1.0f, 1, 0, 1.0f); //Pew pew gunfire 

      if(view.getId() == rightFireButtonID) { 
       isRightButtonClicked = !isRightButtonClicked; 
       view.setBackgroundResource(isRightButtonClicked ? R.drawable.red_button_pressed : R.drawable.red_button); //stays....needs to change back 
      } 
     } 
    }); 

這是很容易與XML選擇。任何幫助表示讚賞。

+3

你需要做的是用'OnTouchListener'代替。一個'OnClickListener'只會在'ACTION_UP'事件後觸發。 –

+0

在我回來檢查我的通知之前,我從字面上只是做了這個。大聲笑。很高興我明白了。儘管感謝您的評論! – IRGeekSauce

回答

0

讓自己匆忙。沒有正確地做。設置一個onTouchListener得到ACTION.DOWNACTION.UP。 :-)

leftFireButton.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View view, MotionEvent motionEvent) { 
     switch(motionEvent.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       leftFireButton.setBackgroundResource(R.drawable.red_button_pressed); 
       soundPool.play(soundID,1.0f,0.5f,1,0,1.0f); //pew pew gunfire 
       return true; 
      case MotionEvent.ACTION_UP: 
       leftFireButton.setBackgroundResource(R.drawable.red_button); 
       return true; 
     } 
     return false; 
    } 
}); 
rightFireButton.setOnTouchListener(new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View view, MotionEvent motionEvent) { 
     switch(motionEvent.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       rightFireButton.setBackgroundResource(R.drawable.red_button_pressed); 
       soundPool.play(soundID,1.0f,0.5f,1,0,1.0f); //pew pew gunfire 
       return true; 
      case MotionEvent.ACTION_UP: 
       rightFireButton.setBackgroundResource(R.drawable.red_button); 
       return true; 
     } 
     return false; 
    } 
}); 
+1

幹得好....恭喜.. – 2017-10-29 04:29:23