Android - 根据用户选择设置背景颜色

时间:2014-12-04 08:19:55

标签: java android if-statement parse-platform

假设我有4个选项供用户使用,包括北,南,东和西(N,S,E,W)。根据用户选择的选项,我希望每个方向都与颜色相关联,当用户选择他们必须执行的方向时,我将其保存到我的后端Parse.com,然后设置整个应用程序的背景颜色这与选择的方向有关。

目前我正在这样做:

if (currentUser.getString("direction").equals("north")) {
    //set background color to red
}
else if (currentUser.getString("direction").equals("west")) {
    //set background color to blue
}
else if (currentUser.getString("direction").equals("east")) {
    //set background color to black=
}
else if (currentUser.getString("direction").equals("south")) {
    //set background color to green
}

当只有四个选项时,这不是太糟糕,但是我已经简化了这个例子,如果有100个选项,这不再是一个好的选择。

另一种更有效的方法是什么?

用户没有选择颜色,我想将方向链接到我想要的颜色?

感谢您的帮助。

我使用枚举方向获取此编译错误:

enter image description here

2 个答案:

答案 0 :(得分:3)

您可以使用enum type。像,

enum Direction {
    NORTH(Color.RED), WEST(Color.BLUE), EAST(Color.BLACK), SOUTH(
            Color.GREEN);

    Direction(Color c) {
        color = c;
    }

    private Color color;

    public static Direction fromName(String name) {
        for (Direction d : Direction.values()) {
            if (d.name().equalsIgnoreCase(name)) {
                return d;
            }
        }
        return NORTH;
    }

    public Color getColor() {
        return color;
    }
}

然后,您可以像

一样使用它
Direction.fromName("south").getColor(); // <-- green.

答案 1 :(得分:0)

为什么你不使用android TypedArray
例如,您可以使用:

RES /值/ arrays.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array name="parse_colors">
        <item>#FFFF0000</item>
        <item>#FF00FF00</item>
        <item>#FF0000FF</item>
    </array>
</resources>

的src / MyActivity.java

TypedArray parseColors = getResources().obtainTypedArray(R.array. parse_colors);
int currentUserBackgroundValue = currentUser.getInt("direction");
String hexColor = colors.getColor(currentUserBackgroundValue, 0); //the second value it's the default value

myView.setBackgroundColor(Color.parseColor(hexColor));

为了在解析服务器和您的应用程序之间保持一致,请考虑使用ParseConfig,文档here