2014-10-08 153 views
1

我在imageview上使用背景顏色來製作矩形顏色,並且我想通過使用搜索欄從六角形中刪除RG或B逐漸變形爲更淺的顏色顏色。我如何在不寫一百萬行代碼的情況下做到這一點? 這是我希望它做的一個例子,儘管試驗了一個盒子。 https://d396qusza40orc.cloudfront.net/cmsc436/Labs/ModernArtUI/modernUI.mp4Android:使用seekbar逐漸改變多個imageview背景的顏色

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int i, boolean b) { 
      if (i >= 25 && i < 50) { 
       imageView.setBackgroundColor(Color.BLUE); 
      } else if (i >= 50 && i < 75) { 
       imageView.setBackgroundColor(Color.GREEN); 
      } else if (i >= 75 && i <= 100) { 
       imageView.setBackgroundColor(Color.YELLOW); 
      } else { 
       imageView.setBackgroundColor(Color.WHITE); 
      } 
     } 

答發現:

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
     @Override 
     public void onProgressChanged(SeekBar seekBar, int i, boolean b) { 
       iv1.setBackgroundColor(Color.argb(0xFF, i, i, 200)); 
} 

取決於你想要什麼顏色,在搜索條的最大值設置爲255,你可以玩的人數在逐步得到你想要的顏色更改。試圖找到顏色時也是很好的參考http://www.tayloredmktg.com/rgb/

+0

'GradientDrawable'可以爲您繪製線性漸變,如果您爲它提供基色。儘管在XML中定義時最多隻能提供三種顏色,但Java中的實際實現並沒有這種限制。 – corsair992 2014-10-08 18:32:22

回答

4
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
    @Override 
    public void onProgressChanged(SeekBar seekBar, int i, boolean b) { 
      iv1.setBackgroundColor(Color.argb(0xFF, i, i, 200)); 
} 

取決於你想要什麼顏色,在搜索條的最大值設置爲255,你可以玩弄數字來逐漸改變你想要的顏色。試圖找到顏色時也是很好的參考http://www.tayloredmktg.com/rgb/

3

沒有單一的正確方法。這取決於你想如何遍歷顏色的光譜。

一個選項:

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
    @Override 
    public void onProgressChanged(SeekBar seekBar, int i, boolean b) { 

     float hue = i/100f; 
     imageView.setBackgroundColor(Color.HSVToColor(new float[]{ hue, 1f, 0.75f })); 
    } 

另(較小優美的)選擇是

seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
    @Override 
    public void onProgressChanged(SeekBar seekBar, int i, boolean b) { 
     double increment = 0xFFFFFFd/100d; 
     int color = i * increment; 

     imageView.setBackgroundColor(color); 
    } 
+0

感謝您的迴應,我如何編輯第一個選項,從藍色到黃色?或者與此視頻非常相似的東西https://d396qusza40orc.cloudfront.net/cmsc436/Labs/ModernArtUI/modernUI.mp4 – goudarziha 2014-10-08 16:29:54

+1

我建議閱讀色彩理論。理解你在做什麼非常重要,而不是複製和粘貼其他人的代碼。當你參加課程學習時,尤其如此(如上面的鏈接所示)。也許你可以在這裏開始閱讀:http://en.wikipedia.org/wiki/HSL_and_HSV – Stephen 2014-10-08 16:43:57