2
我有一個Seek Bar,其值在1到10之間。THUMB停在1,2,3,4,5 ... 10.如何從線性漸變獲取當前顏色?
如果SeekBar是線性漸變,背景顏色[顏色從RED開始,然後是黃色,最後是綠色]。如何獲取拇指位置的當前顏色?
我有一個Seek Bar,其值在1到10之間。THUMB停在1,2,3,4,5 ... 10.如何從線性漸變獲取當前顏色?
如果SeekBar是線性漸變,背景顏色[顏色從RED開始,然後是黃色,最後是綠色]。如何獲取拇指位置的當前顏色?
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 RED
int c2 = 0xFFFFFF00; // ARGB representation of YELLOW
int c3 = 0xFF00FF00; // ARGB representation of GREEN
ArgbEvaluator evaluator = new ArgbEvaluator();
int thumb1 = (int) evaluator.evaluate(0f, c1, c2); // 0f/9f = 0f
int 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
'ArgbEvaluator'是我能想到的只有一個,但我如果您獲得完全相同的顏色,則不是100% – pskink