2014-04-13 3 views
6

검색 표시 줄의 값에 따라 색상을 변경하려고합니다. 색상이 다양하게 나타나기를 바랍니다. 여기검색 표시 줄 값에 따라 색상을 변경하십시오.

내가 뭘하려하지만, 내가 원하는 나에게 색상을 제공하지 않습니다

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(""); 
      } 
    }); 

어떤 아이디어?

+0

에서 색환에서 색을 얻기 위해 빨강에서 시작하여 색상을 오렌지색, 노란색, 녹색, 파란색 및 마젠타 색으로 부드럽게 변경합니다. 귀하의 코드에 의해 당신은 회색 음영을 얻을 것이라고 가정하기 때문에 –

+0

예 색상 원에서 색상을 생성하고 싶습니다. 그렇습니다. 코드가 회색으로 만 바뀌면 고칠 수 없습니다. –

+0

그런 다음 RGB 대신 HSV 색상을 사용하십시오. 아래 코드 스 니펫을 제공했습니다. –

답변

10

으로 색상 값을 계산 R, G를 설정하는 Color.HSVToColor()를 대신 사용하고 직접 B 구성 요소한다 진행 0-100있는 경우 :

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

+0

값을 최대 진도로 설정해야합니까? –

+0

@SarahSami 진도가 0에서 100으로 끝나고 100으로 끝납니다. –

+0

검은 색의 값을 얻을 수없는 이유는 무엇입니까? –

2

Color.argb(int,int,int,int) 메서드에 0-255 값을 전달해야합니다.

이것이 작동할까요?

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

최소값 및 최대 값을 기준으로 진행 값을 조정해야 할 수도 있습니다. 예를 들어 그런 다음 당신은 밝은 채도의 색상이 필요하면, progress * 255/100

+0

하지만 회색만을 얻고 싶지는 않습니다. 색상환에서 모든 색상을 생성하고 싶습니다. –

+0

음, 색상환이 어떻게 작동하는지 모르겠지만, 빨강, 초록, 파랑 ​​값을 반드시 조정해야합니다. 사용자가보기에 닿는 위치를 기반으로하는 'Color.argb'함수입니다. Btw, 전체 알파를 사용하는 경우 전체 알파 (255)로 RGB 색상을 반환하는'Color.rgb' 함수를 사용할 수 있습니다. – Sipka