当前位置: 首页 > 知识库问答 >
问题:

可以在android径向渐变绘制中重新定位中心颜色吗?

苍元章
2023-03-14

在android的径向渐变中,使用标准的开始、中心和结束颜色很容易在左侧实现下面的渐变,其中开始=黄色,中心=紫色,结束=蓝色。但是,右侧的圆需要重新定位中心颜色。这可能吗?

左侧的结果可以通过以下方式重现:

    <shape android:shape="oval">
        <gradient
            android:endColor="#0000ff"
            android:gradientRadius="my_radius"
            android:centerColor="#770077"
            android:startColor="#00ffff"
            android:type="radial"/>
    </shape>

我想知道我是否可以改变中心颜色以达到右边的渐变效果。我相信答案是否定的,但我想看看是否有人找到了这样做的方法。谢谢

共有1个答案

曹超
2023-03-14

遗憾的是,这不能通过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);      
    }
}

你应该注意两件事:

>

“位置”数组指定渐变中每种颜色的位置或强度。玩这个游戏来达到你想要的结果。

希望这有帮助:)

 类似资料:
  • 我想知道我们如何创建从图像中提取颜色的渐变叠加。 就像雷索主场球员一样。

  • 问题内容: 好的,我有这个代码 并且它将淡蓝色的背景绘制到屏幕上。我正在尝试创建一个渐变,该渐变从顶部的深蓝色到底部的浅蓝色。有没有简单的方法可以做到这一点?我是Libgdx和OpenGL的新手,所以我正尝试从书中学习,但我似乎找不到答案。我听说过要绘制一个大正方形并为顶点设置不同的颜色,但是我不确定该怎么做。 问题答案: 在libGDX中,ShapeRenderer对象包含一个方法,该方法为其位

  • 问题内容: 我知道Internet Explorer具有一些专有扩展,因此您可以执行诸如创建具有渐变背景的div之类的操作。我不记得元素名称或其用法。有没有人有一些例子或链接? 问题答案: 我用于所有浏览器渐变的代码: 您需要指定一个高度或zoom: 1将其应用于hasLayoutIE中的元素。 更新: 这是面向所有LESS用户的LESS Mixin(CSS)版本:

  • 主要内容:JavaFX渐变颜色,线性梯度(LinearGradient),径向渐变,半透明渐变,反射循环渐变JavaFX渐变颜色 可以使用径向渐变使形状看起来三维(立体)。 梯度绘制可以在两种或更多种颜色之间内插,这给出形状的深度。JavaFX提供两种类型的渐变:径向渐变()和线性渐变()。 要在JavaFX中创建渐变颜色,需要设置五个属性值。如下 - 设置开始起点的第一个停止颜色。 将终点设置为终止停止颜色。 设置属性以指定是使用标准屏幕坐标还是单位平方坐标。 将循环方法设置为使用三个枚举:,

  • 我在用图书馆。在我展示我的图书馆使用的活动时,我使用了一种颜色来覆盖屏幕。看起来很酷。 但是由于一些原因,我决定使用渐变。我开发了美丽的渐变效果,如下所示 看起来不错。但问题是我使用的库只接受颜色或颜色资源。我没有其他方法可以改变,库正在显示它自己的活动,我只需要传递活动上显示的颜色。 现在我的问题是: 我可以直接定义颜色中的渐变色吗。xml文件。或者有没有办法将渐变色文件转换为可绘制的颜色,可以

  • 好的,这是我的代码。包装Mypanal;