您可以利用 Enum 类轻松定义所需的颜色,这样您就可以增加支持的颜色数量,而无需对代码进行太多更改。
枚举类
public enum ColorFactory {
BLACK(R.id.textView1, R.color.black),
WHITE(R.id.textView2, R.color.white),
BLUE(R.id.textView2, R.color.blue),
RED(R.id.textView2, R.color.red),
CYAN(R.id.textView2, R.color.cyan),
GREEN(R.id.textView2, R.color.green),
GREY(R.id.textView2, R.color.grey),
YELLOW(R.id.textView2, R.color.yellow),
PINK(R.id.textView2, R.color.pink),
PURPLE(R.id.textView2, R.color.purple),
BROWN(R.id.textView2, R.color.brown),
CUSTOM(R.id.textView2, R.color.custom);
int id;
int color;
ColorFactory(int id, int color) {
this.id = id;
this.color = color;
}
public int getId() {
return id;
}
public int getColor() {
return color;
}
public static int getColorById(int id) {
for (ColorFactory currentEnumElement : values()) {
if (currentEnumElement.getId() == id) {
return currentEnumElement.getColor();
}
}
return -1;
}
}
您必须在colors.xml 文件中定义这些颜色,如下所示
颜色.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<color name="black">#000000</color>
<color name="white">#ffffff</color>
<color name="blue">#0000ff</color>
<color name="red">#ff0000</color>
<color name="cyan">#00f2ff</color>
<color name="green">#00ff00</color>
<color name="grey">#8b8378</color>
<color name="yellow">#ffd700</color>
<color name="pink">#e8a4a3</color>
<color name="purple">#b72bef</color>
<color name="brown">#a7823e</color>
<color name="custom">#990000</color>
</resources>
到最后,使用它的代码......(简化)
代码
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
TextView textView1;
TextView textView2;
.
.
.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView1 = (TextView) findViewById(R.id.textView1);
textView2 = . . . .
.
.
.
.
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.textView1:
textView1.setTextColor(ColorFactory.getColorById(view.getId()));
break;
case R.id.textView2:
.
.
.
}
}
}
它应该允许您通过点击来设置颜色。
注意:您也可以使用ButterKnife 绑定视图以提高代码的可读性等。
希望对您有所帮助。