随机获取Android Material Design颜色

时间:2015-10-13 11:14:12

标签: android material-design android-resources

我找到this材料设计颜色列表,我希望从中获得随机颜色。我是Android开发的新手,并不完全了解android资源的工作原理。

我知道我可以从R.color.my_color res/values/colors.xml获取自定义颜色,但我想将我的应用自定义颜色与材质设计颜色分开。

我正在尝试做什么:

  1. 将xml文件从链接导入我res文件夹下的项目(例如res/values/android_material_design_colours.xml
  2. 从文件中获取所有颜色

    int[] allColors =缺少部分

  3. 使用Random

    获取随机颜色

    int randomColor = allColors[new Random().nextInt(allColors.length)];

  4. 这可能还是有更好的方法?请帮助。

2 个答案:

答案 0 :(得分:3)

因为我避免改变文件,所以我通过阅读xml来做到这一点。好的东西Android有类# Collect all DLLs from unicorn unicorn/**/*.dll ,简化了xml解析。我最终得到了这个解决方案:

将xml file导入android.content.res.XmlResourceParser文件夹下的项目(例如res/xml

res/xml/android_material_design_colours.xml

List<Integer> allColors = getAllMaterialColors();
int randomIndex = new Random().nextInt(allColors.size());
int randomColor = allColors.get(randomIndex);

答案 1 :(得分:1)

使用所有材质颜色创建字符串数组。

<resources>
    <string-array name="colors">        
        <item>#ff0000</item>
        <item>#00ff00</item>  
        <item>#0000ff</item>
    </string-array>
</resources>

在活动中获取颜色数组

String[] allColors = context.getResources().getStringArray(R.array.colors);

解析字符串值以获取int值:

int randomColor = Color.parseColor(allColors[new Random().nextInt(allColors.length)]);