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

Android中我想绘制一个动态数量的馅饼PieChart.每个饼应该具有与渐变不同的颜色.

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

如何使用Android框架在Java中实现这一目标?

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

LinearGradient lg = new LinearGradient(1,1,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获取这些值.渐变不包含实际绘图.要获得这些值,您可以将它们绘制到画布上并将颜色从画布中拉出来,或者我建议您自己计算这些值.

它是一个重复的线性渐变,分五步,你有第一个和最后一个颜色的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性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...