【问题标题】:Drawing a rainbow colored ring in android在android中画一个彩虹色的环
【发布时间】:2018-07-10 02:54:52
【问题描述】:

我一直在尝试使用以下代码在 android 中绘制彩虹色环:

public void init(){
    ringPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    ringPaint.setStyle(Paint.Style.STROKE);
    ringPaint.setStrokeWidth(8f);
    ringPaint.setShader(new SweepGradient(0, 0, COLORS2, null));
}



@Override
protected void onDraw(Canvas canvas) {
    canvas.drawCircle(getWidth()/2f,getHeight()/2f ,getHeight()/2f - 16f,ringPaint);
}

COLOR2 的值如下:

final int[] COLORS2 = new int[]{Color.parseColor("#33004c"), Color.parseColor("#4600d2"),
                                Color.parseColor("#0000ff"), Color.parseColor("#0099ff"),
                                Color.parseColor("#00eeff"),Color.parseColor("#00FF7F"),
                                Color.parseColor("#48FF00"),Color.parseColor("#B6FF00"),
                                Color.parseColor("#FFD700"),Color.parseColor("#ff9500"),
                                Color.parseColor("#FF6200"),Color.parseColor("#FF0000"),
                                Color.parseColor("#33004c")};

问题是我只得到了颜色的一个子集,可能是数组中的 3 或 4 种不同的颜色,我不完全确定为什么,谁能提供一些关于为什么会这样的建议?

【问题讨论】:

  • 你能截图你的戒指吗?
  • @Jacky...完成..

标签: android android-view ondraw sweepgradient


【解决方案1】:

创建 SweepGradient 时应指定视图中心而不是 0,0

请看示例

public class CustomView extends View {

    private Paint ringPaint;

    public CustomView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public void init() {
        ringPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        ringPaint.setStyle(Paint.Style.STROKE);
        ringPaint.setStrokeWidth(8f);
    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
        ringPaint.setShader(new SweepGradient(getWidth() / 2, getHeight() / 2, COLORS2, null));
    }

    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawCircle(getWidth() / 2f, getHeight() / 2f, getHeight() / 2f - 16f, ringPaint);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-12
    • 2021-12-28
    • 1970-01-01
    • 2010-11-15
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多