原理是两只画笔,不同颜色,都在绘制。
当A笔画的时候,截取一部份,B同理,最后叠在一起,就显示了文字的变色效果。
此VIEW继承自TextView后,只需要重写onDraw方法,并且把onDraw里面的super去掉。
核心代码如下:
drawText2方法如下:
clipRect就是裁剪,可以看出,这里是只裁剪了左右,而没有管上下。
其中baseLine,基线的算法是确定的,当需要drawText的时候,都要算出基线
dx就是一个居中,将文字居中显示,算出左边的距离而以,容易理解。
save & restore 这里可以理解成图层! 一个 save & restore 之间,都相当于是一个图层。 最终是N个图层叠加显示出最终效果。
当然,如果需要有个渐变效果的话,就是需要不停的调用此方法:
invalidate就是不停的重绘,最终就是调用onDraw。 但不仅权是调用当前VIEW的draw,会把父控件也全部重新绘制一遍。
网友评论