背景:
由于最近系統(tǒng)的學(xué)習(xí)了一下自定義view和動(dòng)畫,當(dāng)知識(shí)看完之后不知道自己掌握了多少,而且平時(shí)和朋友聊天說起過高亮控件,所以寫了一個(gè),不足之處希望大家多多指教。
效果圖:

如圖:我點(diǎn)擊屏幕上“第一個(gè)“button,這個(gè)按鈕會(huì)變?yōu)楦吡粒⑶以谠摽丶挠疑辖菚?huì)有一個(gè)文字說明的button;接下來我點(diǎn)擊這個(gè)文字說明的button,會(huì)把高亮控件移動(dòng)到下一個(gè),知道沒有之后,高亮消失,恢復(fù)正常頁面(當(dāng)然什么時(shí)候開啟高亮,什么時(shí)候消失高亮,都是可以通過方法控制的)。
這種效果的實(shí)現(xiàn)肯定需要使用自定義動(dòng)畫來完成。而自定義動(dòng)畫特別有趣的就是Canvas對(duì)于裁剪的時(shí)候,有一個(gè)這樣的方法:
public boolean clipRect(float left, float top, float right, float bottom,
@NonNull Region.Op op)
這里特別說一下Region.Op這個(gè)參數(shù)
該參數(shù)的作用就是在剪下多個(gè)區(qū)域下來的情況,當(dāng)這些區(qū)域有重疊的時(shí)候,這個(gè)參數(shù)決定重疊部分該如何處理,多次裁剪之后究竟獲得了哪個(gè)區(qū)域
廢話不多說,一圖勝千言:

注:此圖不是我畫的,是從網(wǎng)上找的,如有侵權(quán),請(qǐng)聯(lián)系刪除。
通過這種方式我們就可以在屏幕上摳出我們所需要的高亮的部分。
下面放出我的代碼
具體的實(shí)現(xiàn)我在代碼中注釋的很清楚,大家可以直接看我的代碼,覺得好的希望給一個(gè)star。
項(xiàng)目地址: