我在 TextView 中使用Linear Gradient设置渐变颜色,发现非常有趣的情况。要设置 TextView 渐变,我使用了以下代码:
int c1 = getResources().getColor(R.color.test1);
int c2 = getResources().getColor(R.color.test2);
Shader shader = new LinearGradient(0, 0, 0, status.getTextSize(),
new int[]{c1, c2},
new float[]{0, 1}, Shader.TileMode.CLAMP);
status.getPaint().setShader(shader);
我玩了一点颜色
- 仅设置 c1=green 和 c2-transparent
<color name="test1">#ff00ff00</color> <color name="test2">#000000ff</color>
- 仅设置 c2=blue 和 c1-transparent
<color name="test1">#0000ff00</color> <color name="test2">#ff0000ff</color>
所以我在第二种情况下看不到透明。
有人可以解释这个渐变生成器的性质吗?
更新: 感谢@Romain Guy 的回答。我更多地使用渐变,几乎得到了我想要的:
Shader shader = new LinearGradient(0, 0, 0, status.getTextSize(),
new int[]{c1, c2, colour, colour},
new float[]{0.2f, 0.7f, 0.699f, 1}, Shader.TileMode.CLAMP);
和 status.setIncludeFontPadding();
真的:
错误的:
正如您所见,纯色的中心边框和渐变色根据填充值移动。
我们可以计算渐变边框的浮点值以准确获取 TextView 中字符的中心吗? 我认为这将取决于 FontType。