我使用Lineat Gradient在TextView中设置渐变颜色,发现非常有趣的情况: 要设置TextView gredient,请使用下一个代码:
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);
我玩一个带颜色的痘痘
<color name="test1">#ff00ff00</color> <color name="test2">#000000ff</color>
<color name="test1">#0000ff00</color> <color name="test2">#ff0000ff</color>
所以我在第二种情况下看不到transperent。
有人可以解释这个渐变构建器的性质吗?
更新 感谢@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();
真:
假:
正如你可以看到固体calor的中心边界和渐变collor根据填充值移动。
我们可以计算渐变边框的浮点值,以便在TextView中获得完全中心的字符吗? 我认为这将取决于FontType。
答案 0 :(得分:1)
存在半透明效应。问题是您在文本上方的0处开始渐变。您可能应该考虑TextView的填充和/或您正在使用的字体的FontMetrics。