残念ながら、これは XML 宣言では実現できませんが、コードでは可能です。
簡単なコード サンプルを次に示します。
public class MyDrawing extends View
{
private Paint mPaint;
public MyDrawing(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
init();
}
public MyDrawing(Context context, AttributeSet attrs)
{
super(context, attrs);
init();
}
public MyDrawing(Context context)
{
super(context);
init();
}
private void init()
{
int [] colors = new int[] { 0xff0000ff, 0xff00ff00, 0xffff0000 };
float [] positions = new float[] { 0.4f, 0.7f, 0.9f };
RadialGradient gradient = new RadialGradient(50, 50, 50, colors, positions, TileMode.CLAMP);
mPaint = new Paint();
mPaint.setDither(true);
mPaint.setShader(gradient);
}
@Override
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
canvas.drawCircle(circleX, circleY, circleRadius, mPaint);
}
}
次の 2 点に注意してください。
色配列では、アルファ (1 番目から chars) を指定する必要があります。私の例では、両方とも "ff" として指定しました。これは透明性がないことを意味します。アルファを指定しない場合、デフォルトで 0 になります。
位置配列は、グラデーション内の各色の位置または強度を指定します。これをいじって、探している結果を達成してください。
お役に立てれば :)