TextView中的线性渐变和透明颜色

时间:2013-05-18 19:19:57

标签: android textview transparency gradient

我使用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);

我玩一个带颜色的痘痘

  1. 仅设置c1 =绿色和c2-transperent
    <color name="test1">#ff00ff00</color>
    <color name="test2">#000000ff</color>
    
  2. enter image description here

    1. 仅设置c2 =蓝色和c1-transperent
      <color name="test1">#0000ff00</color>
      <color name="test2">#ff0000ff</color>
      
    2. enter image description here

      所以我在第二种情况下看不到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();

      真: enter image description here

      假: enter image description here

      正如你可以看到固体calor的中心边界和渐变collor根据填充值移动。

      我们可以计算渐变边框的浮点值,以便在TextView中获得完全中心的字符吗? 我认为这将取决于FontType。

1 个答案:

答案 0 :(得分:1)

存在半透明效应。问题是您在文本上方的0处开始渐变。您可能应该考虑TextView的填充和/或您正在使用的字体的FontMetrics。