2014-11-13 2 views
0

Я пытаюсь показать простой выбор цвета, чтобы пользователь мог выбрать цвет нескольких текстов ... Но каждый цветной указатель, который я нашел до сих пор, кажется слишком сложным для моих целей. Я бы не прочь его кодировать, если бы у меня было какое-то представление о том, как.Android: простой выбор цвета

Может ли кто-нибудь предоставить мне код для простого выбора цвета? Или укажите мне направление дальнейшего изучения того, как его кодировать?

Я пытаюсь добиться чего-то вроде этого:

http://i.imgur.com/gIYWpiJ.jpg

+1

Уже ответил - смотри пост [ссылка] (http://stackoverflow.com/questions/4342757/how-to-make -a-color-gradient-in-a-seekbar) – Wildroid

+0

, который был бы потрясающим, но он не компилируется, метод конструктора для LinearGradient не работает –

+1

Оформить заказ [ссылка] (http://stackoverflow.com/questions/6980906/android-color-picker) – Mantas

ответ

3

Попробуйте это:

При использовании XML:

<SeekBar 
    android:id="@+id/seekbar_font" 
    android:layout_width="300dip" 
    android:layout_height="wrap_content" 
    android:layout_margin="10px" 
    android:max="100" 
    android:progress="50"></SeekBar> 

В деятельности:

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); 
+0

Thx, это почти работает, за исключением того факта, что цвета применяются только к половине бара. Я предполагаю, что он должен иметь какое-то отношение к конструктору LinearGradient, поэтому я буду искать документацию и попытайтесь ее исправить. –

+0

@ArtemioRamirez вам нужно определить размер бара, чтобы он соответствовал ширине градиента или наоборот - обратите внимание на 300 в обоих местах - указатель и градиент – Wildroid

+0

да, я уже сделал, thx. –

3

В случае кто-то еще работает в это вот код для получения значения:

seekBarFont.setMax(256*7-1); 
seekBarFont.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; 
       } 

       seekBarFont.setBackgroundColor(Color.argb(255, r, g, b)); 
      } 
     } 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) { 

     } 

     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) { 

     } 
    }); 
Смежные вопросы