Nic*_*las 9 android linear-gradients hsv
我用这个代码用一个Lineargradient做了一个色调渐变:(我知道它本来可以变得更简单Color.parseColor但是我必须这样做.我也不能使用drawable.)
colors = new int[]{ Color.HSVToColor(new float[]{0, 1, 1}),
Color.HSVToColor(new float[]{60, 1, 1}),
Color.HSVToColor(new float[]{120, 1, 1}),
Color.HSVToColor(new float[]{180, 1, 1}),
Color.HSVToColor(new float[]{240, 1, 1}),
Color.HSVToColor(new float[]{300, 1, 1}),
Color.HSVToColor(new float[]{360, 1, 1}) };
Shader shader = new LinearGradient(0, 0, width, 0, colors, null, Shader.TileMode.CLAMP);
paint.setShader(shader);
Run Code Online (Sandbox Code Playgroud)
产生这种结果的颜色略有偏移,绿色区域太小,蓝色区域与预期结果相比太大.
我查了一切.我尝试使用new float[]{0f, 1/6f, 2/6f, 3/6f, 4/6f, 5/6f, 1f}而不是null位置参数,相同的结果.这可能也是一个错误.
请注意,这不是重复这个帖子也不是这一个.这些是关于在代码中设置的不正确的渐变停止,这不是我的情况.它可能与这个有关,但我不知道如何.
编辑:也许这可以通过设置不相等的位置来解决,但我怎样才能计算出这些确切的位置?
我一直在努力解决这个问题总共超过 3 个小时……结果几乎没有。它在我的代码中。最糟糕的是我添加了赏金并在 15 分钟后解决了它。
我在具有特定填充的视图中绘制了渐变,而不是这个
LinearGradient(0, 0, width, 0, colors, null, Shader.TileMode.CLAMP);
Run Code Online (Sandbox Code Playgroud)
我不得不这样做:
LinearGradient(left, 0, right, 0, colors, null, Shader.TileMode.CLAMP);
Run Code Online (Sandbox Code Playgroud)
不知何故,渐变在我添加到我的视图中的填充之前开始,在 (0, 0),这是我的渐变开始左侧 10 倾角,导致偏移。
这下全说通了。
| 归档时间: |
|
| 查看次数: |
627 次 |
| 最近记录: |