我想將SeekBar(即舊式Java滑塊)用於顏色漸變選取器。我看到過這樣的例子,但他們都需要創建新的類和類。必須有一種方法來修改或重寫原始類。或者只是用漸變替換背景。如何在SeekBar中創建顏色漸變?
1
A
回答
10
我想到了這裏是你如何做到這一點。
您在XML中創建標準的seekbar。
<SeekBar
android:id="@+id/seekbar_font"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="10px"
android:layout_below="@id/color_font_text"
android:max="100"
android:progress="50"></SeekBar>
然後通過創建一個boxShape,然後強制裏面它的LinearGradient自定義您的onCreate(),搜索條。
LinearGradient test = new LinearGradient(0.f, 0.f, 300.f, 0.0f,
new int[] { 0xFF000000, 0xFF0000FF, 0xFF00FF00, 0xFF00FFFF,
0xFFFF0000, 0xFFFF00FF, 0xFFFFFF00, 0xFFFFFFFF},
null, TileMode.CLAMP);
ShapeDrawable shape = new ShapeDrawable(new RectShape());
shape.getPaint().setShader(test);
SeekBar seekBarFont = (SeekBar)findViewById(R.id.seekbar_font);
seekBarFont.setProgressDrawable((Drawable)shape);
這裏是當前代碼的向上以上SeekBar Color Gradient
7
這是除了使用的LinearGradient提供的解決方案的圖像。試試這個邏輯將進度轉化爲rgb:
lineColorSeekbar.setMax(256*7-1);
lineColorSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(fromUser){
int r = 0;
int g = 0;
int b = 0;
if(progress < 256){
b = progress;
} else if(progress < 256*2) {
g = progress%256;
b = 256 - progress%256;
} else if(progress < 256*3) {
g = 255;
b = progress%256;
} else if(progress < 256*4) {
r = progress%256;
g = 256 - progress%256;
b = 256 - progress%256;
} else if(progress < 256*5) {
r = 255;
g = 0;
b = progress%256;
} else if(progress < 256*6) {
r = 255;
g = progress%256;
b = 256 - progress%256;
} else if(progress < 256*7) {
r = 255;
g = 255;
b = progress%256;
}
lineColorSeekbar.setBackgroundColor(Color.argb(255, r, g, b));
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
相關問題
- 1. CSS創建顏色漸變
- 2. 如何在Python中創建顏色漸變?
- 3. 如何在svg背景中創建漸變顏色
- 4. 如何在iOS中使用漸變創建疊加顏色
- 5. 如何在Matlab中使用第三個變量創建顏色漸變?
- 6. d3.js:如何創建自定義顏色漸變圖例?
- 7. 如何添加漸變顏色到使用UIBezierPath創建的CAShapeLayer
- 8. 如何使用顏色分區創建漸變效果?
- 9. 在bootstrap中創建四個顏色漸變mixin
- 10. Javascript顏色漸變
- 11. 顏色漸變(ColdFusion)
- 12. Android:使用seekbar逐漸改變多個imageview背景的顏色
- 13. 如何在vb.net中爲背景顏色創建一個帶漸變的按鈕?
- 14. 用顏色製作顏色漸變:
- 15. 如何在XCode 6中爲UISlider添加漸變色彩顏色?
- 16. 如何複製UINavigationBar的漸變顏色?
- 17. 如何動畫漸變停止顏色?
- 18. 如何在Opera中創建CSS3漸變?
- 19. 如何在顏色變化的畫布上在Android上繪製漸變顏色?
- 20. 如何更改Android中的seekbar顏色?
- 21. 使用CSS3在文本上創建雙色漸變漸變
- 22. 如何在div邊框上創建不帶顏色的不透明漸變?
- 23. 逐漸改變顏色
- 24. 漸變顏色拉斐爾
- 25. FabricJS漸變顏色值
- 26. 生成顏色漸變
- 27. 顏色漸變的背景
- 28. 帶顏色漸變的UIBeziepath
- 29. DarkGDK顏色漸變代碼
- 30. Three.js行的顏色漸變
對這段代碼非常感謝,它像一個魅力。 但是,你如何獲得顏色選擇呢? 我可以得到的唯一參數是進度,那麼,如何將顏色與進度聯繫起來? 提前致謝! – 2011-01-25 19:50:41
是的,這是最難的部分。由於梯度在技術上不是線性的,因此您必須編寫自己的算法來將拾取器與實際顏色在進度條上的位置關聯起來。 – JPM 2011-01-27 00:11:16