【问题标题】:Changing color according to seek bar value根据搜索栏值更改颜色
【发布时间】:2014-04-13 13:28:01
【问题描述】:

我正在尝试根据搜索栏的值更改颜色。我希望颜色范围更广。

这是我尝试过的,但它没有给我想要的颜色:

seekBarColor.setOnSeekBarChangeListener( new OnSeekBarChangeListener() {
        int progress = 0;
          @Override
          public void onProgressChanged(SeekBar seekBar, int progresValue, boolean fromUser) {
            progress = progresValue;
            int lower = Color.argb(0xFF,progress*0x10000, progress*0x100, progress)+0xff000000;
            color.setBackgroundColor(lower);
          }

          @Override
          public void onStartTrackingTouch(SeekBar seekBar) {

          }

          @Override
          public void onStopTrackingTouch(SeekBar seekBar) {
              db.updateColor("");
          }
    });

有什么想法吗?

【问题讨论】:

  • 您想从色环中获取颜色吗?因为根据您的代码,我想您会得到灰色阴影
  • 是的,我想从色环生成颜色,是的,我的代码只返回灰色,我无法修复它
  • 然后使用 HSV 颜色而不是 RGB。下面我提供了一个代码sn-p。

标签: android colors seekbar


【解决方案1】:

如果您只需要明亮、饱和的颜色,请使用Color.HSVToColor(),而不是直接设置 R、G 和 B 分量:

float[] hsvColor = {0, 1, 1};
// generate only hue component in range [0, 360),
// leaving saturation and brightness maximum possible
hsvColor[0] = 360f * progress / maxProgress;
view.setBackgroundColor(Color.HSVToColor(hsvColor));

此代码将从红色开始设置颜色,然后随着progress0 更改为maxProgress,平滑地变为橙色、黄色、绿色、蓝色和洋红色再变为红色

【讨论】:

  • 我应该将最大进度设置为哪个值?
  • @SarahSami 你的进度从 0 开始,到 100 结束,然后到 100。
  • 为什么我不能得到任何黑色值?
  • @SarahSami 因为黑色具有 hsv 值 {0, 0, 0}。首先,您需要确定您想要获得哪种通过 3D 色彩空间的路线。从黑色到白色通过灰色阴影是一种可能的方式,从红色到红色通过各种颜色的色环是另一种方式......实际上,它们可以不同。
  • @SarahSami 首先,您需要决定哪种颜色应该开始,哪种颜色应该结束,以及颜色应该如何在中间点发生变化。解决方案会有所不同。
【解决方案2】:

您必须将 0-255 值传递给 Color.argb(int,int,int,int) 方法。

这可能有用吗?

Color.argb(0xFF, progress, progress, progress) //will return some gray color based on progress. 

您可能需要根据最小值和最大值调整进度值。 例如,如果你有进度0-100,那么你应该用progress * 255 / 100计算你的颜色值

【讨论】:

  • 但我不想只得到灰色,我想从色环生成所有颜色
  • 好吧,我不知道你的颜色圈是如何工作的,但你肯定必须根据用户触摸你的位置来调整传递给Color.argb 函数的红色、绿色、蓝色值看法。顺便说一句,如果您使用的是全 alpha,则可以使用 Color.rgb 函数,它返回具有全 alpha (255) 的 RGB 颜色。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-18
  • 1970-01-01
  • 1970-01-01
  • 2017-07-10
相关资源
最近更新 更多