我找到了 this Material 设计颜色列表,我想从中获取随机颜色。我是 android 开发的新手,并不完全了解 android 资源的工作原理。
我知道我可以通过 R.color.my_color
从 res/values/colors.xml
获取自定义颜色,但我想将我的应用自定义颜色与 Material 设计颜色。
我正在尝试做的事情:
- 从
res
文件夹下的项目链接导入 xml 文件(例如res/values/android_material_design_colours.xml
) 从文件中获取所有颜色
int[] allColors =
(缺失部分)使用
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;
}