gpt4 book ai didi

android-ui - 在 android 中使用圆锥形渐变的圆

转载 作者:太空狗 更新时间:2023-10-29 12:46:00 27 4
gpt4 key购买 nike

有谁知道如何在 android 中设置锥形渐变?就像这张图:

http://www.astutegraphics.com/images/blog/tutorials/how_to_create_true_gears_18_oct_2011/29.png

最佳答案

当然,使用 SweepGradient , 然后在 Canvas 上画一个圆。
可以找到一个例子here .玩得开心!

如果不需要太多颜色,也可以通过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 舒适的堆栈跟踪。如果您收到非堆栈跟踪错误,请首先检查所有 native 组件。

这是一个简单的例子:

    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);
}

}

请注意,如果中心发生变化(如果 View 调整大小),您可能不想重新创建 SweepGradient。为了简单起见,我省略了额外的构造函数和 onMeasure ...

关于android-ui - 在 android 中使用圆锥形渐变的圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18170785/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com