2014-10-08 116 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