如何通过点击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条件,因为这段代码很复杂,我想要短代码。 所以任何人都建议我,我怎样才能缩短我的代码?
答案 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);
}
});