我使用下面的代码将纹理效果应用到我的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);
如果有人能提供你的专业知识,那将非常有帮助。提前致谢。
要清除应用的绘画属性,只需使用
textView.paint.reset()
在将普通十六进制颜色应用于之前使用setShader应用纹理效果的textpaint之前,我们必须将null传递给Paint#setShader为@L。 Swifter在评论中提出。
textPaint.setShader(null);
快乐的编码!