2014-03-31 73 views
1

如何通過單擊Button來更改我的佈局的背景顏色?如何通過單擊按鈕來更改我的佈局的背景顏色

這是我的代碼:

Button color_change; 
LinearLayout layout; 
int value = 1; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    color_change = (Button)findViewById(R.id.color_btn); 
    layout = (LinearLayout)findViewById(R.id.LL); 

    color_change.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      if (value == 1) { 
       layout.setBackgroundColor(Color.RED); 
      } 
      else if (value == 2) { 
       layout.setBackgroundColor(Color.BLUE); 
      } 
      else if (value == 3) { 
       layout.setBackgroundColor(Color.MAGENTA); 
      } 
      else if (value == 4) { 
       layout.setBackgroundColor(Color.DKGRAY); 
       value = 0; 
      } 
      value++; 
     } 
    }); 

但我想更換其他代碼,如果其他條件,因爲這個代碼是複雜的,我想簡短的代碼。 因此,任何人都建議我,我怎樣才能縮短我的代碼?

+1

沒有什麼是你的問題的代碼正在運行不錯.. –

+0

我知道這是好的,但我想短我的代碼。 –

回答

0

你會使用這樣的...

button.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       switch(value) 
       { 
       case 1:layout.setBackgroundColor(Color.RED); 
        break; 
       case 2:layout.setBackgroundColor(Color.BLUE); 
        break; 
       case 3: layout.setBackgroundColor(Color.MAGENTA); 
        break; 
       case 4:layout.setBackgroundColor(Color.DKGRAY); 
       value = 0; 
        break;    
       } 

       value++; 
      } 
     }); 
1

沒有魔法。使用switch而不是else if s。爲了增加清晰度,您可以考慮使用常量或值作爲value的值,以便您不必處理硬編碼的整數。

2

你可以試試這個

把所有顏色分爲一個數組,並在OnClick方法從數組中獲得特定的顏色,並設置它像

int color[]=new int[]{Color.BLUE,Color.RED,Color.GRAY}; 

    color_change.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 

     if (value <color.length) { 
      layout.setBackgroundColor(color[value]); 
     } 
     value++; 
    } 
}); 
0

的要使用

List<int> colorsList = new List<int>(); 
colorsList.add(Color.RED); 
colorsList.add(Color.WHITE); 
colorsList.add(Color.BLUE); 
colorsList.add(Color.GREEN); 
//here you can add other colors to list 

Iterator<int> colorIterator = colorsList.iterator(); 
顏色列表3210

函數來獲得一個顏色

int getNextColor() 
{ 
    if(colorIterator.hasNext()) 
    { 
     return colorIterator.next(); 
    } 
    else 
    { 
     colorIterator = colorsList.iterator(); 
     return colorIterator.next(); 
    } 
} 

,這裏是你的聽衆

color_change.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 

      int color = getNextColor(); 

      layout.setBackgroundColor(color); 
    } 
}); 
1

你可以使用一個數組來存儲數據:

int[] colors = {Color.RED, Color.BLUE, Color.BLACK}; 
int index = value % colors.length; 
layout.setBackgroundColor(colors[index]); 
value++; 
相關問題