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

定义多色渐变

濮阳茂材
2023-03-14

首先在这里发布。请原谅我,以防这些显而易见。我完全是xml的新手

我想为我正在开发的应用程序实现我在Adobe Illustrator和Photoshop中创建的设计。我知道你可以使用XML和开始/中心/结束颜色作为基本渐变。但我想创造一个完全符合我设计的,有尽可能多的颜色和自定义的间隔,他们开始和结束。我在另一个线程中找到了这个解决方案:

ShapeDrawable.ShaderFactory shaderFactory = new ShapeDrawable.ShaderFactory() {
    @Override
    public Shader resize(int width, int height) {
        LinearGradient linearGradient = new LinearGradient(0, 0, width, height,
            new int[] { 
                0xFF1e5799, 
                0xFF207cca, 
                0xFF2989d8, 
                0xFF207cca }, //substitute the correct colors for these
            new float[] {
                0, 0.40f, 0.60f, 1 },
            Shader.TileMode.REPEAT);
         return linearGradient;
    }
};
PaintDrawable paint = new PaintDrawable();
paint.setShape(new RectShape());
paint.setShaderFactory(shaderFactory);

如何包含通过值/颜色手动定义的颜色?它不允许我使用@color/darkgrey等,因为它们不是整数。此外,我不能把它们放在六边形代码中,原因可能与此相同。

我想做新的int[]{@color/A,@color/B,…}

还有第二个问题:浮动似乎定义了使用颜色的自定义间隔。在他的例子中,他有4种int颜色和4个float值——但这只定义了我所理解的3个间隔(?):[0,0.4][0.4,0.6][0.6,1]的百分比。还是以不同的方式工作?

如有必要,我会详细说明。

共有2个答案

左博学
2023-03-14

@本的答案很完整,回答了你的大部分问题。回答最后一点

此外,我不能把它们放在六边形代码中,原因可能与此相同。

在Java中,在“0x”前面加上一个十六进制符号。颜色表示为ARGB(Alpha/R/G/B),因此

int red = 0xffff0000, blue = 0xff0000ff, green = 0xff00ff00;
int red_half_alpha = 0x80ff0000;

是正确的。

赫连冠玉
2023-03-14

如何包含通过值/颜色手动定义的颜色?

如果你想在java中使用颜色资源值,你需要访问一个Context对象或它的一个子类(如活动

int color = ContextCompat.getColor(context, R.color.my_color_name);

浮动似乎定义了使用颜色的自定义间隔

不完全是。值定义了从01放置每种颜色的点。因此,如果您有四种颜色,您需要四个位置(第一个和最后一个应该是0和1)。

考虑到这一点,你可以这样写:

int[] colors = new int[] {
    ContextCompat.getColor(context, R.color.color_one),
    ContextCompat.getColor(context, R.color.color_two),
    ContextCompat.getColor(context, R.color.color_three),
    ContextCompat.getColor(context, R.color.color_four);
};

float[] positions = new float[] {
    0, 0.33, 0.67, 1
};

LinearGradient linearGradient = 
    new LinearGradient(0, 0, width, height, colors, positions, Shader.TileMode.REPEAT);

这将从以下位置产生梯度:

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

  • 我有个小问题。 我创建了自定义gradle插件(独立插件),并将它从mavenlocal包含在我的简单项目中。它正在工作,但我不知道如何在我的插件中设置系统属性。更多细节:在我的插件中,在任务中,我想设置系统属性(system.setproperty(key,value))并从我的主应用程序中获取它的属性,例如在main类main方法中,但main方法不使用此属性 当我在构建中创建任务时。grad

  • 问题内容: 是否有生成器,或生成这种文本的简便方法,而无需定义 每个 字母 所以像这样: 但是不是用 彩虹 色而是用其他颜色(例如,白色到灰色/浅蓝色渐变等)生成的,我为此找不到简单的解决方案。有什么办法吗? 问题答案: 我不完全了解 Stop的 工作原理。但是我有一个 渐变文本 示例。也许这会帮到您! _您也可以根据需要为渐变添加更多颜色,或者从颜色生成器中选择其他颜色

  • 本文向大家介绍Android自定义带水滴的进度条样式(带渐变色效果),包括了Android自定义带水滴的进度条样式(带渐变色效果)的使用技巧和注意事项,需要的朋友参考一下 一、直接看效果 二、直接上代码 1.自定义控件部分 3. 布局文件部分 4.Activity部分 以上所述是小编给大家介绍的Android自定义带水滴的进度条样式(带渐变色效果),希望对大家有所帮助,如果大家有任何疑问请给我留言

  • 渐变色编辑器 渐变色编辑器可以设置粒子中某个属性随时间变化的颜色,渐变色编辑器的界面如下图 渐变色编辑器可以进行如下操作: Mode可以选择两种模式,Blend模式会按照当前时刻相邻的两个关键帧进行插值得到当前帧的颜色,Fixed模式会直接使用当前时刻的前一个关键帧颜色。 点击色带上方的空白处可以插入一个 alpha 关键帧,点击色带下方的空白处可以插入一个 rgb 关键帧。 拖动关键帧左右移动可

  • 本文向大家介绍android自定义进度条渐变圆形,包括了android自定义进度条渐变圆形的使用技巧和注意事项,需要的朋友参考一下 在安全卫生上,经常看到有圆形的进度条在转动,效果非常好看,于是就尝试去实现一下,具体实现过程不多说了,直接上效果图,先炫耀下。 效果图: 分析:比较常见于扫描结果、进度条等场景 利用canvas.drawArc(RectF oval, float startAngle