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 次 |
最近记录: |