ページ

2015年5月7日木曜日

AndroidでColorPickerDialog


Android Color Picker作成

AndroidでColorPickerDialogを作成した時のメモ

◆ 概要
    HSV色空間のColorPickerDialog 色の選択を行う

HSVモデル・・・
  ・色相(Hue) 0~360の範囲
  ・彩度(Saturation・Chroma) 0~100%の範囲
  ・明度(Value・Lightness・Brightness) 0~100%の範囲
  上記3つの成分からなる色空間


◆ Androidでのグラデーション
  Androidでグラデーションを描くには、次のクラスを使う
  ・LinearGradient 直線方向のグラデーションを描く
  ・RadialGradient 円環のグラデーションを描く
  ・SweepGradient 色の変化方向が円環になっているグラデーションを描くcolorToHSV

  それぞれShaderクラスを継承していて以下の様に使用する

  Shader s = new LinearGradient(・・・);
  Paint p = new Paint();
  p.setShader(s);


1. LinearGradient
   
  LinearGradient(float x0, float y0, float x1, float y1,
             int[] colors, float[] positions, Shader.TileMode tile)
    x0 : 線形グラデーションのX方向開始位置
    y0 : 線形グラデーションのY方向開始位置
    x1 : 線形グラデーションのX方向終了位置
    y1 : 線形グラデーションのY方向終了位置
    colors : 設定された色(複数)によって分散される
    positions : colorsで設定された色の分散位置 ※nullを指定すると均等に分散
    tile :
           CLAMP : 飛び出した場合は, edgeのカラーでいきます
           MIRROR : 繰り返しだけど, mirror配置にします
           REPEAT : 繰り返し

  2. RadialGradient 今回未使用

3. SweepGradient
    public SweepGradient (float cx, float cy, int[] colors, float[] positions)
    cx : 中心X位置
    cy : 中心Y位置
    colors : 分散させる色(複数)
    positions : colorsで設定された色の分散位置 ※nullを指定すると均等に分散

Color#colorToHSVメソッドの使い方
  public static void colorToHSV (int color, float[] hsv)
  第一引数に指定されたargbの色をHSVに変換する
  使う時はfloat[3]を第二引数へ設定する
  処理を抜けた後
    ・hsv[0] には 色相(Hue)が0~360の範囲で入っている
    ・hsv[1] には 彩度(Saturation・Chroma)が0~1の範囲で入ってる
    ・hsv[2] には 明度(Value・Lightness・Brightness)が0~1の範囲で入ってる
   
作成したColorPickerDialogはこちらで公開しています

0 件のコメント:

コメントを投稿