Android2D Gradient グラデーションを描く

Android2D でグラデーションを作ります。

グラデーションの種類は3つです。

LinearGradient Developers
RadialGradient Developers
SweepGradient Developers

いずれのクラスもShaderの拡張クラスです。最終的にPaintのsetShaderで指定します。

例)

public class DrawGradient extends View
{
	private Paint paint;
	
	private RectF rectf;
	
	public DrawGradient ( Context context )
	{
		super(context);
		paint = new Paint(Paint.ANTI_ALIAS_FLAG);
		
		int[] colors = { 0xFFFF0000, 0xFFFFFF00, 0xFFFF00FF};
		//float[] positions = { 0.0f, 50.0f, 100.0f};
		
		LinearGradient lig = new LinearGradient(100, 100, 200, 200, colors, null, Shader.TileMode.CLAMP);
		paint.setShader(lig);
		rectf = new RectF(100, 100, 200, 200);
	}

	@Override
	protected void onDraw ( Canvas canvas )
	{
		canvas.drawOval(rectf, paint);
	}
}

LinearGradient(float x0, float y0, float x1, float y1, int[] colors, float[] positions, Shader.TileMode tile)
です。
positions は null でO.K. 等間隔になるっぽい colorsには, 色の配列を入れます。

LenearGradient

Mode

Shader.TileMode

CLAMP 飛び出した場合は, edgeのカラーでいきます
MIRROR 繰り返しだけど, mirror配置にします
REPEAT 繰り返します

RadialGradient

int[] colors = {0xFFFF0000, 0xFFFFFF00, 0xFFFF00FF};
RadialGradient rg = new RadialGradient(150, 150, 50, colors, null, Shader.TileMode.CLAMP);
paint.setShader(rg);

RadialGradient

SweepGradient

int[] colors = {0xFFFF0000, 0xFFFFFF00, 0xFFFF00FF};
SweepGradient sg = new SweepGradient(150, 150, colors, null);
paint.setShader(sg);

SweepGradient

参考
Y.A.M の 雑記帳
Androidのプログラムを書くときにはよくお世話になっていますブログです。