有幸在鴻洋的一篇Android FoldingLayout 折疊布局 原理及實(shí)現(xiàn)(一)中低矮,學(xué)習(xí)到了Matrix的setPolyToPoly操作铅乡,于是著想到了如何讓一張靜態(tài)的蝴蝶圖片動(dòng)起來(lái)。
先上圖:
項(xiàng)目地址试疙,gif有點(diǎn)掉幀宝磨,完整效果直接把項(xiàng)目clone下來(lái)試試就行了。
整體思路由三個(gè)部分組成:
1.蝴蝶的繪制腻窒。
2.折疊動(dòng)畫(huà)。
下面大概描述一下實(shí)現(xiàn)過(guò)程:
蝴蝶的繪制
蝴蝶的繪制使用的是svg+圖片融合PorterDuffXfermode磅崭,對(duì) 這并不是一張圖片儿子,也就是說(shuō)蝴蝶上的花紋是可以隨意變化的。
在布局中添加花紋代碼如下:
<com.martin.butterfly.master.ButterFlyLoadView
android:id="@+id/mbutterfly_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:figure="@drawable/figure1"
/>
關(guān)于svg的轉(zhuǎn)化我并沒(méi)有使用常見(jiàn)的解析方式砸喻;而是使用的是SVG2Drawable,去除了關(guān)于svg的解析過(guò)程柔逼,直接使用生成后的path代碼蒋譬。
在組件初始化的時(shí)候使用PorterDuffXfermode生成相關(guān)花紋的蝴蝶圖片。
折疊動(dòng)畫(huà)
折疊的原理還是跟文章頭部所說(shuō)到的Android FoldingLayout 折疊布局 原理及實(shí)現(xiàn)(一)與其原理一致愉适,主要判斷好兩支翅膀的矩形塊與ToPoly的變化犯助,這里不再?gòu)?fù)述了,如果需要了解該api的話可以去看看鴻洋的博客维咸,我將這些變化都封裝在ButterFlyDrawable中方便更改視圖效果剂买,并不僅僅使用在dialog之中。
動(dòng)的更逼真點(diǎn)癌蓖。
如果你喜歡這個(gè)動(dòng)畫(huà)的話瞬哼,歡迎點(diǎn)贊和star