如何通过单击按钮更改布局的背景颜色

时间:2014-03-31 06:32:16

标签: android

如何通过点击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++;
        }
    });

但我想用其他代码替换if else条件,因为这段代码很复杂,我想要短代码。 所以任何人都建议我,我怎样才能缩短我的代码?

5 个答案:

答案 0 :(得分: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++;
    }
});

答案 1 :(得分:1)

没有魔力。使用switch代替else if。为了更加清晰,您可以考虑将常量或某些内容作为value的值,这样您就不必处理硬编码的整数。

答案 2 :(得分:1)

您可以使用数组来存储数据:

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

答案 3 :(得分: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++;
            }
        });

答案 4 :(得分: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();

获得下一个颜色的功能

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);
    }
});