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には, 色の配列を入れます。
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);
SweepGradient
int[] colors = {0xFFFF0000, 0xFFFFFF00, 0xFFFF00FF}; SweepGradient sg = new SweepGradient(150, 150, colors, null); paint.setShader(sg);
参考
Y.A.M の 雑記帳
Androidのプログラムを書くときにはよくお世話になっていますブログです。