当然,使用SweepGradient,然后在画布上绘制一个.
可以找到一个示例here.玩得开心!
如果不需要太多颜色,也可以通过xml进行定义:
/res/drawable/sweepgradient.xml:
a:shape="oval"
a:dither="true">
a:startColor="#FFFF0000"
a:centerColor="#FF0000FF"
a:endColor="#FF00FF00" />
SweepGradient是本机组件,因此您不能依赖Java舒适的堆栈跟踪.如果遇到非堆栈跟踪错误,请首先检查所有本机组件.
这是一个简单的示例:
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.SweepGradient;
import android.view.View;
public class GradientView extends View {
// Edit these values as you want!
private static int[] mColors={Color.RED, Color.GREEN, Color.BLUE};
private Paint mPaint=new Paint();
private boolean mSetShader=false;
public GradientView(Context context) {
super(context);
mPaint.setAntiAlias(true);
}
@Override
protected void onDraw(Canvas canvas) {
float cX=getWidth()/2F, cY=getHeight()/2F;
if (!mSetShader) {
mPaint.setShader(new SweepGradient(cX, cY, mColors, null));
mSetShader=true;
}
canvas.drawCircle(cX, cY, Math.min(cX, cY), mPaint);
}
}
请注意,如果中心发生更改(如果视图调整大小),则可能不需要重新创建SweepGradient.为了简单起见,我省略了其他构造函数和onMeasure.