
我有一个搜索栏,其值的范围从1到10.THUMB停在1,2,3,4,5 … 10.
如果Seekbar为线性渐变,则为背景色[颜色从红色开始,然后是黄色,最后是绿色].如何获得拇指所在位置的当前颜色?
解决方法:
pskink’s suggestion是正确的.您可以使用ArgbEvaluator实现此目标.
假设这是您的Seekbar:
C1 C2 C3 +-------|-------|-------|-------|---+---|-------|-------|-------|-------+ 1 2 3 4 5 6 7 8 9 10您有10个Thumb位置(从1到10的数字),3种颜色(正负号表示颜色的位置,而C1,C2和C3表示颜色的名称).
C1和C2之间(以及C2和C3之间)的距离可以分为9个部分.这9个片段可以代表您的Thumb位置:
C1 C2 C3 +-------|-------|-------|-------|---+---|-------|-------|-------|-------+ | | | | | | | | | | | 0/9 2/9 4/9 6/9 8/9 9/9 | | | | | | | | | | | 0/9 1/9 3/9 5/9 7/9 9/9因此,可以通过以下方式计算Seekbar的值:
int c1 = 0xFFFF0000; // ARGB representation of REDint c2 = 0xFFFFFF00; // ARGB representation of YELLOWint c3 = 0xFF00FF00; // ARGB representation of GREENArgbEvaluator evaluator = new ArgbEvaluator();int thumb1 = (int) evaluator.evaluate(0f, c1, c2); // 0f/9f = 0fint thumb2 = (int) evaluator.evaluate(2f / 9f, c1, c2);int thumb3 = (int) evaluator.evaluate(4f / 9f, c1, c2);int thumb4 = (int) evaluator.evaluate(6f / 9f, c1, c2);int thumb5 = (int) evaluator.evaluate(8f / 9f, c1, c2);int thumb6 = (int) evaluator.evaluate(1f / 9f, c2, c3);int thumb7 = (int) evaluator.evaluate(3f / 9f, c2, c3);int thumb8 = (int) evaluator.evaluate(5f / 9f, c2, c3);int thumb9 = (int) evaluator.evaluate(7f / 9f, c2, c3);int thumb10 = (int) evaluator.evaluate(1f, c2, c3); // 9f/9f = 1f 总结 以上是内存溢出为你收集整理的android-如何从线性渐变获取当前颜色?全部内容,希望文章能够帮你解决android-如何从线性渐变获取当前颜色?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)