我找到this材料设计颜色列表,我希望从中获得随机颜色。我是Android开发的新手,并不完全了解android资源的工作原理。
我知道我可以从R.color.my_color
res/values/colors.xml
获取自定义颜色,但我想将我的应用自定义颜色与材质设计颜色分开。
我正在尝试做什么:
res
文件夹下的项目(例如res/values/android_material_design_colours.xml
)从文件中获取所有颜色
int[] allColors =
(缺少部分)
使用Random
类
int randomColor = allColors[new Random().nextInt(allColors.length)];
这可能还是有更好的方法?请帮助。
答案 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)]);