Hatena::ブログ(Diary)

明日の鍵

2010-10-14

Androidでカラーピッカーを作ろう

HSVって?

HSV色空間 - Wikipedia 
http://ja.wikipedia.org/wiki/HSV%E8%89%B2%E7%A9%BA%E9%96%93
  • Hue - 色相
  • Saturation - 彩度
  • Value - 明度

の3つで表す色の指定方法です。

RGBの親戚みたいなものです。

wikipedia読むとなにやら難しい事書いてあります。

ぼくはあんまりよんでません。

カラーピッカーを作りたい

wikipediaに書いてある事をぜんぶ読まなくても

AndroidにはHSV⇔RGBのメソッドが用意されているんで読まなくてもいいです。

理解するのは値の範囲くらい

色相0〜360
彩度0%〜100%
明度0%〜100%

使うメソッドはColor#HSVToColor(float[])てやつ

Color | Android Developers 
http://developer.android.com/reference/android/graphics/Color.html#HSVToColor(float[])

配列にHSVの値を入れたらRGBを返してくれるメソッドです。

色相バーを作ろう

色相の値を1ずつずらして色を並べれば色相バーが作れます。

コード
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.Bitmap.Config;
import android.os.Bundle;
import android.widget.ImageView;

public class MainActivity extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // 画像を作る
    int height = 60;
    int width = 360;
    Bitmap bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
    int color;

    // 色を設定する
    for (int i = 0; i < 360; i++) {
      // 色相に対応する色を取得する
      color = Color.HSVToColor(new float[] { i, 1, 1 });
      // 画像に色を設定する
      for (int j = 0; j < height; j++) {
        bitmap.setPixel(i, j, color);
      }
    }

    // イメージをActivityに表示する
    ImageView imageView = new ImageView(this);
    imageView.setImageBitmap(bitmap);
    setContentView(imageView);
  }
}
実行結果

f:id:tomorrowkey:20101014165100p:image

彩度や明度

色相とほぼ同じコードで作れると思います。

がんばって!

カラーピッカー

私はこんな感じのカラーピッカー作りました。

f:id:tomorrowkey:20101014165101p:image

ソースはこちら

http://tomorrowkey.googlecode.com/svn/trunk/ColorPallet

すぐ動くサンプルはこちら

http://tomorrowkey.googlecode.com/svn/trunk/ColorPallet/bin/ColorPallet.apk

署名してません。