我用的是 线性梯度 在TextView中设置渐变色,发现了非常有趣的情况。 为了设置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);
我稍微玩了一下颜色
<color name="test1">#ff00ff00</color> <color name="test2">#000000ff</color>
<color name="test1">#0000ff00</color> <color name="test2">#ff0000ff</color>
所以我在第二种情况下看不到透明。
谁能解释一下这个梯度生成器的性质?
更新了一下,谢谢 @Romain Guy 的回答。感谢 @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);
and status.setIncludeFontPadding();
true: true:
false.setIncludeFontPadding(); true: false:
如你所见,纯色和渐变色的中心边框根据padding值的变化而变化。
我们是否可以计算渐变边框的浮动值来精确地获得TextView中字符的中心?我想这将取决于FontType。
半透明效果是有的。问题是你在0处开始渐变,也就是在文字上方。你可能应该考虑到TextView的padding和你使用的字体的FontMetrics。