原理是兩只畫筆,不同顏色吟温,都在繪制序仙。
當(dāng)A筆畫的時(shí)候,截取一部份鲁豪,B同理潘悼,最后疊在一起,就顯示了文字的變色效果爬橡。
此VIEW繼承自TextView后治唤,只需要重寫onDraw方法,并且把onDraw里面的super去掉糙申。
核心代碼如下:
drawText2方法如下:
clipRect就是裁剪宾添,可以看出,這里是只裁剪了左右郭宝,而沒有管上下辞槐。
其中baseLine掷漱,基線的算法是確定的粘室,當(dāng)需要drawText的時(shí)候,都要算出基線
dx就是一個(gè)居中卜范,將文字居中顯示衔统,算出左邊的距離而以,容易理解。
save & restore?這里可以理解成圖層锦爵!?一個(gè) save & restore?之間舱殿,都相當(dāng)于是一個(gè)圖層。?最終是N個(gè)圖層疊加顯示出最終效果险掀。
當(dāng)然沪袭,如果需要有個(gè)漸變效果的話,就是需要不停的調(diào)用此方法:
invalidate就是不停的重繪樟氢,最終就是調(diào)用onDraw冈绊。?但不僅權(quán)是調(diào)用當(dāng)前VIEW的draw,會(huì)把父控件也全部重新繪制一遍埠啃。