在安卓中创建圆锥形渐变的圆形

3
1个回答

3
当然,您可以使用SweepGradient,然后在画布上绘制一个圆。
您可以在这里找到示例。祝玩得愉快!
如果您不需要太多颜色,也可以通过xml定义:
/res/drawable/sweepgradient.xml
<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:a="http://schemas.android.com/apk/res/android"
        a:shape="oval"
        a:dither="true">

    <gradient a:type="sweep"
            a:startColor="#FFFF0000"
            a:centerColor="#FF0000FF"
            a:endColor="#FF00FF00" />

</shape>

一个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...

谢谢,但我是Android新手..你能建议我如何使渐变与上面的图像完全相同吗?我需要添加第二个渐变吗? - Vika Gamar
你不必添加第二个渐变,我建议你采用编程方式(不使用xml)。只需查看示例(链接),并提供一个(int)颜色数组作为第三个参数即可。 - tilpner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接