如何删除应用于textpaint的纹理并应用十六进制颜色?

问题描述 投票:0回答:2

我使用下面的代码将纹理效果应用到我的textpaint

    Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(),textureRid);

    Shader shader = new BitmapShader(bitmap, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);

    textPaint.setShader(shader);

这种纹理效果很好。但是当我尝试将正常的十六进制颜色应用于文本画图时,没有任何变化,纹理效果仍然存在。当没有应用纹理效果时,下面的代码工作正常。

textPaint.setColor(color);

现在我理解的是,我们需要删除我们应用的着色器或使其无效。所以我试图将null值传递给setshader,它没有用。

因此,经过大量研究后,即使在使用下面的代码应用纹理之后,我也能够将正常颜色应用于文本绘制。

    Shader textShader=new LinearGradient(0, 0, 0, 25, new     int[]{color,color}, new float[]{0, 1}, Shader.TileMode.CLAMP);

    textPaint.setShader(textShader);

但是我不确定,在将着色器设置为textpaint之后或者有更好的方法可以将textcolor应用于textpaint是正确的方法。当我尝试在应用纹理效果后应用阴影时,我也无法更改文本画的阴影颜色。阴影颜色与文本颜色保持一致。

    textPaint.clearShadowLayer();
    textPaint.setShadowLayer(shadowvalue , shadowvalue, shadowvalue, color);

如果有人能提供你的专业知识,那将非常有帮助。提前致谢。

android textview textures shadow textcolor
2个回答
0
投票

要清除应用的绘画属性,只需使用

textView.paint.reset()

-1
投票

在将普通十六进制颜色应用于之前使用setShader应用纹理效果的textpaint之前,我们必须将null传递给Paint#setShader为@L。 Swifter在评论中提出。

textPaint.setShader(null);

快乐的编码!

© www.soinside.com 2019 - 2024. All rights reserved.