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

我知道我可以通过 R.color.my_colorres/values/colors.xml 获取自定义颜色,但我想将我的应用自定义颜色与 Material 设计颜色。

我正在尝试做的事情:

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

    int[] allColors =(缺失部分)

  3. 使用Random类获取随机颜色

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

这是可能的还是有更好的方法?请帮忙。

请您参考如下方法:

因为我避免更改文件,所以我通过读取 xml 来完成。幸好 Android 有类 android.content.res.XmlResourceParser 可以简化 xml 解析。我最终得到了这个解决方案:

导入了 xml file到我在 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); 

private List<Integer> getAllMaterialColors() throws IOException, XmlPullParserException { 
    XmlResourceParser xrp = getContext().getResources().getXml(R.xml.materialcolor); 
    List<Integer> allColors = new ArrayList<>(); 
    int nextEvent; 
    while ((nextEvent = xrp.next()) != XmlResourceParser.END_DOCUMENT) { 
        String s = xrp.getName(); 
        if ("color".equals(s)) { 
            String color = xrp.nextText(); 
            allColors.add(Color.parseColor(color)); 
        } 
    } 
    return allColors; 
} 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!