2

如果这太愚蠢和简单,我很抱歉,但我没有我能想到的所有选择。它甚至不是真正的编程。但是我在 switch 语句中有几行,我必须多次使用。我想不出任何方法可以存储所有这些代码(这些行)并在我想要的时候重用。

        case 0:
            bcolor=Color.rgb(240, 255, 255);//Azure
            break;
        case 1:
            bcolor=Color.BLACK;
            break;
        case 2:
            bcolor=Color.BLUE;
            break;
        case 3:
            bcolor=Color.rgb(165, 42, 42);//Brown
            break;
        case 4:
            bcolor=Color.rgb(255, 127, 50);//Coral
            break;
        case 5:
            bcolor=Color.rgb(00, 255, 255);//cyan
            break;
        case 6:
            bcolor=Color.rgb(255, 00, 255);//Fuchsia
            break;
        case 7:
            bcolor=Color.rgb(255, 215, 00);//Gold
            break;
        case 8:
            bcolor=Color.GRAY;
            break;
        case 9:
            bcolor=Color.GREEN;
            break;
        case 10:
            bcolor=Color.rgb(173, 255, 47);//Green Yellow
            break;
        case 11:
            bcolor=Color.rgb(00, 255, 00);//Lime
            break;
        case 12:
            bcolor=Color.MAGENTA;
            break;
        case 13:
            bcolor=Color.rgb(80, 00, 00);//Maroon
            break;
        case 14:
            bcolor=Color.rgb(80, 80, 00);//Olive
            break;
        case 15:
            bcolor=Color.rgb(255, 165, 00);//Orange
            break;
        case 16:
            bcolor=Color.rgb(255, 192, 203);//pink
            break;
        case 17:
            bcolor=Color.rgb(80, 00, 80);//purple
            break;
        case 18:
            bcolor=Color.RED;
            break;
        case 19:
            bcolor=Color.rgb(244, 196, 30);//Saffron
            break;
        case 20:
            bcolor=Color.rgb(192, 192, 192);//Silver
            break;
        case 21:
            bcolor=Color.rgb(238, 82, 238);//Violet
            break;
        case 22:
            bcolor=Color.WHITE;
            break;
        case 23:
            bcolor=Color.YELLOW;
            break;

我必须在几个开关条件下使用所有这些开关盒。不可能将它们绑定在某种标签或其他东西中。当我想用的时候给他们打电话……

4

6 回答 6

2

首先,在 XML 文件中定义颜色可能是明智之举。

所以创建这个文件:res/values/colors.xml

并添加这样的颜色:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="azure">#f0ffff</color>
    <color name="brown">#a52a2a</color>
</resources>

因此,您可以将它们用作:

R.color.azure

http://developer.android.com/guide/topics/resources/more-resources.html#Color

于 2013-07-19T14:50:01.907 回答
2

将此代码包装在一个函数中并调用该函数:

public int getColor(int i)
{
    switch(i) {
        case 0:
            return Color.rgb(240, 255, 255);//Azure
        case 1:
            return Color.BLACK;
        case 2:
            return Color.BLUE;
        case 3:
            return Color.rgb(165, 42, 42);//Brown
        case 4:
            return Color.rgb(255, 127, 50);//Coral
        case 5:
            return Color.rgb(00, 255, 255);//cyan
        case 6:
            return Color.rgb(255, 00, 255);//Fuchsia
        case 7:
            return Color.rgb(255, 215, 00);//Gold
        case 8:
            return Color.GRAY;
        case 9:
            return Color.GREEN;
        case 10:
            return Color.rgb(173, 255, 47);//Green Yellow
        case 11:
            return Color.rgb(00, 255, 00);//Lime
        case 12:
            return Color.MAGENTA;
        case 13:
            return Color.rgb(80, 00, 00);//Maroon
        case 14:
            return Color.rgb(80, 80, 00);//Olive
        case 15:
            return Color.rgb(255, 165, 00);//Orange
        case 16:
            return Color.rgb(255, 192, 203);//pink
        case 17:
            return Color.rgb(80, 00, 80);//purple
        case 18:
            return Color.RED;
        case 19:
            return Color.rgb(244, 196, 30);//Saffron
        case 20:
            return Color.rgb(192, 192, 192);//Silver
        case 21:
            return Color.rgb(238, 82, 238);//Violet
        case 22:
            return Color.WHITE;
        case 23:
            return Color.YELLOW;
        default:
            return 0;
    }
}
于 2013-07-19T14:44:12.330 回答
0

像这样的东西:

public int getColor(int option){
   switch(option){
   // switch statement in here
   }
   return bcolor;
}

现在你可以这样称呼它:

int option = 12 // some option
int myColor = getColor(option);
于 2013-07-19T14:44:55.777 回答
0

如果它们是 switch 语句中的唯一情况,您可以将它们放在返回整数的静态函数中,然后调用它 (bcolor = MyClass.getColor(int switchVariable))

于 2013-07-19T14:45:03.900 回答
0

我见过并使用的另一种最佳解决方案是将所有这些值存储在地图中(查找的时间复杂度恒定):

public static Map<Integer, Integer> colorMap = new HashMap<Integer, Integer>();

static
{
    colorMap.put(0, Color.rgb(240, 255, 255));
    colorMap.put(1, Color.BLACK);
    colorMap.put(2, Color.BLUE);
    colorMap.put(3, Color.rgb(165, 42, 42));
    colorMap.put(4, Color.rgb(255, 127, 50));
    colorMap.put(5, Color.rgb(00, 255, 255));
    colorMap.put(6, Color.rgb(255, 00, 255));
    colorMap.put(7, Color.rgb(255, 215, 00));
    colorMap.put(8, Color.GRAY);
    colorMap.put(9, Color.GREEN);
    colorMap.put(10, Color.rgb(173, 255, 47));
    colorMap.put(11, Color.rgb(00, 255, 00));
    colorMap.put(12, Color.MAGENTA);
    colorMap.put(13, Color.rgb(80, 00, 00));
    colorMap.put(14, Color.rgb(80, 80, 00));
    colorMap.put(15, Color.rgb(255, 165, 00));
    colorMap.put(16, Color.rgb(255, 192, 203));
    colorMap.put(17, Color.rgb(80, 00, 80));
    colorMap.put(18, Color.RED);
    colorMap.put(19, Color.rgb(244, 196, 30));
    colorMap.put(20, Color.rgb(192, 192, 192));
    colorMap.put(21, Color.rgb(238, 82, 238));
    colorMap.put(22, Color.WHITE);
    colorMap.put(23, Color.YELLOW);
}


public static int getColor(int lookup)
{
    int color = colorMap.get(lookup);
    return color == null ? 0 : color;
}
于 2013-07-19T15:03:41.590 回答
0

正如小矮人所说,

将此代码包装在一个函数中并调用该函数。

你可以这样做(我没有接受你所有的案例):

private void awesomeColorFunction() {
        case 0:
            bcolor=Color.rgb(240, 255, 255);//Azure
            break;
        case 1:
            bcolor=Color.BLACK;
            break;
        case 2:
            bcolor=Color.BLUE;
            break;
}

然后像这样在您的代码中调用它:

awesomeColorFunction();

但最聪明的方法当然是,正如 Pewiity 所说,将你的颜色放在一个 xml 文件中

于 2013-07-19T14:51:51.750 回答