gpt4 book ai didi

android - 为什么 LinearGradient 构造函数的这个参数似乎不起作用?

转载 作者:可可西里 更新时间:2023-11-01 11:41:27 33 4
gpt4 key购买 nike

我想在我的 SeekBar 中设置一个带有线性渐变的自定义 drawable 作为栏的背景 drawable。我在以下代码 fragment 的第二条语句中创建了 LinearGradient,并按如下方式创建:

// Creating the drawable:
ShapeDrawable shapeDrawable = new ShapeDrawable(new RectShape());
Shader linearGradientShader = new LinearGradient(0, 0, 300, 20, new int[] { Color.RED, Color.BLUE },
new float[] { 0, 1 }, Shader.TileMode.CLAMP);
shapeDrawable.getPaint().setShader(linearGradientShader);
shapeDrawable.setBounds(10, 10, 300, 30);

seekBar.setProgressDrawable(shapeDrawable);

这里的问题是,根据 specification ,第6个参数定义为

May be null. The relative positions [0..1] of each corresponding color in the colors array. If this is null, the the colors are distributed evenly along the gradient line.

我希望红色和蓝色的颜色均匀分布,即一半的形状应该呈现红色,另一半应该呈现蓝色(如下图)。

enter image description here

所以我尝试了 nullnew float[] {0, 0.5f}new float[] {0, 1} 作为第 6 个参数的值。我分别得到了以下三个结果。

  1. 对于 null:enter image description here

  2. 对于 new float[] {0, 0.5f}:enter image description here

  3. 对于 new float[] {0, 1}:enter image description here

显示我哪里出错了?我应该如何解决这个问题?

最佳答案

使用

ShapeDrawable#setShaderFactory(ShapeDrawable.ShaderFactory factory)

工厂有一个方法 Shader resize(int width, int height) 每次你的 drawable bounds 改变时调用它,这是你应该返回你的 LinearGradient 基于 width/height 参数的着色器

正如您将看到的,您现在只需传递 null positions,颜色就会均匀分布

关于android - 为什么 LinearGradient 构造函数的这个参数似乎不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35974463/

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