背景:
由于最近系統(tǒng)的學(xué)習(xí)了一下自定義view和動(dòng)畫(huà),當(dāng)知識(shí)看完之后不知道自己掌握了多少,而且平時(shí)和朋友聊天說(shuō)起過(guò)高亮控件截歉,所以寫(xiě)了一個(gè)而咆,不足之處希望大家多多指教霍比。
效果圖:
如圖:我點(diǎn)擊屏幕上“第一個(gè)“button,這個(gè)按鈕會(huì)變?yōu)楦吡帘┍福⑶以谠摽丶挠疑辖菚?huì)有一個(gè)文字說(shuō)明的button悠瞬;接下來(lái)我點(diǎn)擊這個(gè)文字說(shuō)明的button,會(huì)把高亮控件移動(dòng)到下一個(gè)涯捻,知道沒(méi)有之后浅妆,高亮消失,恢復(fù)正常頁(yè)面(當(dāng)然什么時(shí)候開(kāi)啟高亮障癌,什么時(shí)候消失高亮凌外,都是可以通過(guò)方法控制的)。
這種效果的實(shí)現(xiàn)肯定需要使用自定義動(dòng)畫(huà)來(lái)完成混弥。而自定義動(dòng)畫(huà)特別有趣的就是Canvas對(duì)于裁剪的時(shí)候趴乡,有一個(gè)這樣的方法:
public boolean clipRect(float left, float top, float right, float bottom,
@NonNull Region.Op op)
這里特別說(shuō)一下Region.Op這個(gè)參數(shù)
該參數(shù)的作用就是在剪下多個(gè)區(qū)域下來(lái)的情況,當(dāng)這些區(qū)域有重疊的時(shí)候蝗拿,這個(gè)參數(shù)決定重疊部分該如何處理晾捏,多次裁剪之后究竟獲得了哪個(gè)區(qū)域
廢話(huà)不多說(shuō),一圖勝千言:
注:此圖不是我畫(huà)的哀托,是從網(wǎng)上找的惦辛,如有侵權(quán),請(qǐng)聯(lián)系刪除仓手。
通過(guò)這種方式我們就可以在屏幕上摳出我們所需要的高亮的部分胖齐。
下面放出我的代碼
具體的實(shí)現(xiàn)我在代碼中注釋的很清楚玻淑,大家可以直接看我的代碼,覺(jué)得好的希望給一個(gè)star呀伙。
項(xiàng)目地址: