我有地图上的别针 -
现在我正在做:
Drawable Marker_1 = null;
Drawable Marker_2 = null;
Drawable Marker_3 = null;
Drawable Marker_4 = null;
Drawable Marker_5 = null;
Drawable Marker_6 = null;
Drawable Marker_7 = null;
Drawable Marker_8 = null;
Drawable Marker_9 = null;
Drawable Marker_10 = null;
Drawable Marker_11 = null;
Marker_2 = MA.getResources().getDrawable(R.drawable.mark_00ff00);
Marker_3 = MA.getResources().getDrawable(R.drawable.mark_990099);
Marker_4 = MA.getResources().getDrawable(R.drawable.mark_ff0000);
Marker_5 = MA.getResources().getDrawable(R.drawable.mark_000000);
Marker_6 = MA.getResources().getDrawable(R.drawable.mark_ffffff);
Marker_7 = MA.getResources().getDrawable(R.drawable.mark_999999);
Marker_8 = MA.getResources().getDrawable(R.drawable.mark_ff9900);
Marker_9 = MA.getResources().getDrawable(R.drawable.mark_ffcccc);
Marker_10 = MA.getResources().getDrawable(R.drawable.mark_999966);
Marker_11 = MA.getResources().getDrawable(R.drawable.mark_cc99cc);
houseMarker = MA.getResources().getDrawable(R.drawable.house_outline);
...
if (color.contains("ffffff")) {
return houseMarker;
} else if (color.contains("00ff00")) {
return Marker_2;
} else if (color.contains("990099")) {
return Marker_3;
} else if (color.contains("ff0000")) {
return Marker_4;
} else if (color.contains("000000")) {
return Marker_5;
} else if (color.contains("0000ff")) {
return Marker_1;
} else if (color.contains("999999")) {
return Marker_7;
} else if (color.contains("ff9900")) {
return Marker_8;
} else if (color.contains("ffcccc")) {
return Marker_9;
} else if (color.contains("999966")) {
return Marker_10;
} else if (color.contains("cc99cc")) {
return Marker_11;
}
我想避免这种情况,只能有一个标记(白色可绘制),然后将drawables颜色更改为传入的颜色
答案 0 :(得分:0)
如果它真的是你应该能够使用的颜色:
Drawable.setColorFilter(yourcolor,Mode.MULTIPLY)
这将采取任何白色的东西,使它成为你的颜色。任何明确的东西都应该被忽略,任何其他颜色都可以调整它们的颜色。
我不知道为什么你的颜色是字符串。您需要在int中将它们作为十六进制值。
因此对于你的Marker_9,你会使用0xffffcccc,而对于标记10,你会使用0xff999966等。