1

我有地图上的图钉-

现在我正在做:

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

我想避免这种情况,并且能够只使用一个标记(一个白色可绘制对象),然后将可绘制对象的颜色更改为传入的颜色

4

1 回答 1

-1

如果它真的是一种颜色,你应该能够使用:

Drawable.setColorFilter(yourcolor, Mode.MULTIPLY)

这将采用任何白色并使其成为您的颜色。任何清晰的东西都应该被忽略,任何其他颜色只会调整它们的颜色。

我不知道为什么你的颜色是字符串。您需要将它们作为 int 中的十六进制值获取。

因此,对于您的 Marker_9,您将使用 0xffffcccc,对于标记 10,您将使用 0xff999966,等等。

于 2013-06-08T02:32:55.303 回答