gpt4 book ai didi

java - 定义多色渐变

转载 作者:行者123 更新时间:2023-11-29 19:06:35 26 4
gpt4 key购买 nike

第一次发帖。也请原谅,以防万一这很明显。我是 xml 和 java 的新手,主要是一名设计师。

我想为我正在开发的应用程序实现我在 Adob​​e 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 等,因为它们不是整数。出于同样的原因,我也不能将它们放入十六进制代码中。

我想做 new int [] {@color/A, @color/B, ...}

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

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

最佳答案

How do I include colors I manually defined via values/colors?

如果您想在 java 中使用颜色资源值,您将需要访问 Context 对象或其子类之一(如 Activity)。然后你可以调用

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

the float seems to define the custom intervals from which the colors are used

不完全是。 float[] 值定义从 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_onecolor_two00.33
  • color_twocolor_three0.330.67
  • color_threecolor_four0.671

关于java - 定义多色渐变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47005463/

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