android - 如何以编程方式从 Android 上的渐变中获取颜色列表

标签 android list colors gradient

在 Android 中,我想绘制一个带有动态数量饼图的饼图。每个饼图的颜色应该与渐变不同。

例如,我想要从浅棕色到深棕色的渐变。如果我需要画五个馅饼,我需要从这个渐变的开始到结束有五个卷。

我如何使用 Android 框架在 Java 中做到这一点?

我发现我可以为一条线创建一个 LinearGradient,即:

LinearGradient lg = new LinearGradient(1, 1, 5, 5, toRGB("lightbrown"), toRGB("darkbrown"), TileMode.REPEAT);

但我没有找到任何函数可以从这条线获取颜色,即:

// for the five needed RGB colors from the gradient line
lg.getRGBColor(1, 1);
lg.getRGBColor(2, 2);
lg.getRGBColor(3, 3);
lg.getRGBColor(4, 4);
lg.getRGBColor(5, 5);

你有什么想法我可以得到这个吗?

谢谢!

最佳答案

您不能直接从 LinearGradient 中获取这些值。渐变不包含实际绘图。要获得这些值,您可以将它们绘制到 Canvas 上并将颜色从 Canvas 中拉出,或者我建议您自己计算这些值。

这是一个重复的五步线性渐变,您拥有第一种和最后一种颜色的 RGB 值。剩下的只是数学。这是伪代码:

int r1 = startColor.red;
int g1 = startColor.green;
int b1 = startColor.blue;

int r2 = endColor.red;
int g2 = endColor.green;
int b2 = endColor.blue;

int redStep = r2 - r1 / 4;
int greenStep = g2 - g1 / 4;
int blueStep = b2 - b1 / 4;

firstColor = new Color(r1, g1, b1);
secondColor = new Color(r1 + redStep, g1 + greenStep, b1 + blueStep);
thirdColor = new Color(r1 + redStep * 2, g1 + greenStep * 2, b1 + blueStep * 2);
fourthColor = new Color(r1 + redStep * 3, g1 + greenStep * 3, b1 + blueStep * 3);
fifthColor = new Color(r1 + redStep * 4, g1 + greenStep * 4, b1 + blueStep * 4);

关于android - 如何以编程方式从 Android 上的渐变中获取颜色列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7779621/

相关文章:

r - 如何在R中对颜色进行排序

android - 从 Android 上的视频文件中提取元数据

android - 在android中编辑文本焦点

c# - 向列表元素添加引号

python - 将一个列表中的当前元素与另一个列表中的下一个元素进行比较

r - 在图像 {graphics} 中添加颜色图例

android - MPAndroid Chart如何制作流畅的折线图

android - 点击事件在MVVM架构中的位置

python - 如何在python 3中获取子数组

javascript - 如何获取接近另一种颜色的颜色的 rgb 值?