2014-03-31 69 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++; 
相关问题