Ars*_*lan 8 java android gradient textview
我想将渐变设置为文本颜色,同时我希望文本在TextView. 到目前为止,我所实现的是文本只能显示渐变或笔画,不能同时显示两者。
我创建了一个扩展的自定义类TextView,并且使用以下方法:
用它来绘制描边:
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(_strokeWidth);
setTextColor(_strokeColor);
Run Code Online (Sandbox Code Playgroud)
这给了我这个结果:
使用以下代码添加渐变:
Shader textShader = new LinearGradient(0f, 0f, getWidth(), getTextSize(), gradientColorsArray, null, Shader.TileMode.CLAMP);
paint.setShader(textShader);
Run Code Online (Sandbox Code Playgroud)
它给了我以下结果:
问题是当我结合上述两种方法时,绘制了笔划,但笔划的颜色与我给绘画对象的渐变相同。
以下是我想要达到的结果。如果有人可以指导我如何实现预期的结果,那就太好了。
经过4天多的等待和大量的研究,我终于能够成功地达到预期的输出。
我犯的错误是在绘画对象上绘制描边时,我将描边颜色设置为textcolor。这次我所做的是创建一个LinearGradient()对象并paint.shader在设置paintStyle(Paint.Style.Stroke).
Paint paint = this.getPaint();
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(5f);
paint.setShader(new LinearGradient(0f, 0f, getTextSize(), getTextSize(), mOutlineColor, mOutlineColor, Shader.TileMode.CLAMP));
Run Code Online (Sandbox Code Playgroud)
onDraw()在我的类方法中设置笔划后CustomTextView,我调用了super.onDraw(canvas)
然后我LinearGradient()为渐变颜色创建一个新对象,如下所示:
Paint paint = this.getPaint();
paint.setStyle(Paint.Style.FILL);
Shader linearShader = new LinearGradient(0f, 0f, getWidth(), getTextSize(), colors, null,
Shader.TileMode.CLAMP);
paint.setShader(linearShader);
Run Code Online (Sandbox Code Playgroud)
最后再次调用super.onDraw(canvas),这给了我textview一个笔画以及文本颜色的渐变。
| 归档时间: |
|
| 查看次数: |
1081 次 |
| 最近记录: |