這互動炸了 三 閃屏頁是像雲一樣消失的

2021-07-27 06:10:26 字數 2334 閱讀 6210

《互動炸了》或許是一系列高階特效教程, 文中會介紹一些比較炫酷的特效,以及實現的思路。特效實現本身也許不會有太大的難度。難點在於實現的思路。一旦思路被開啟,特效將很簡單實現。

1.view放大不是真正的放大。

2.view平移之後,可能懸浮在頂部的已經換成了乙個一模一樣的雙胞胎view。

3.比較特殊的如上面的效果,擴散並不是view自己被擴散。

所以在做動效的時候,應該從乙個魔術師的角度去考慮,而不能從使用者的角度來考慮,做到思維的發散。這裡可以去看看一些魔術揭秘教程~做到看起來很炫酷,原理很簡單,基本上動效的思路就有啦。

我們先把特效分為兩段,一段為描邊動畫。另一段為雲霧擴散動畫。首先來研究第一段。

第一段其實很簡單,大部分小夥伴一眼就可以看出來,這就是svg結合path實現的動畫。恩,對~你說的沒錯,網上有很多關於這種動畫的實現,這裡直接把需要的東西給到大家~

首先,你需要一張svg,怎麼獲得呢,美工會配合我嗎? 想多了,完全不需要美工大大幫忙~我們可以自己動手來。

首先需要用到乙個神器:vector magic他可以幫我們把普通轉換為svg。這裡我就找來了一張鐵塔的簡筆畫~ 轉換之後,就可以得到svg檔案了~

其次,需要用到乙個工具類,用於把svg轉換成path.這裡我直接拿了gastudio哥的乙個工具類:svgpathparser 接下來,我們把拿到的svg儲存在string.xml檔案中待用~

接下來使用pathmeasure 來進行svg轉換後path的繪製,具體的細節,請看原始碼~這裡不過多闡述。

float stop = mlength * manimatorvalue;

mtowerpathmeasure.getsegment(0, stop, mtowerdst, true);

canvas.drawpath(mtowerdst, mpaint);

鐵塔完畢後,有點單調~ 我們來給他繪製一些雲彩~ 每個雲彩都是乙個path,所以畫雲彩只是繪製一些path.

private

void

drawcould(canvas canvas)

}

最後,加上動畫~ 讓他不生硬。最後暴漏乙個方法,在進入activity的時候執行,第乙個階段就完成啦~

public

void

startanimate()

}, mduration / 2);

}gettitleanimate().start();

}

第二階段看起來比較炫,其實也是比較簡單的,擴散不好搞,可以換乙個思路嘛。所以這裡我就想到使用xfermode,沒錯,你看到發散的雲,其實又是另一張:

哈哈哈哈,這張一貼出來,你是不是想笑。原來看起來很炫的效果,真實這麼搞笑。

好的,有了思路就很好繼續了。我只需要讓兩個使用xfermode搞基一番,並且在過程中讓這個view逐漸透明,遮罩逐漸放大即可。

當然,有了思路變成很簡單,其實還是有些坑的,說說遇到的坑。

關於xfermode小夥伴們用到過的可能了解,他有坑,非常大的坑。。經常發現與demo圖出不來一樣的效果。所以我專門總結了一篇部落格如下:porterduffxfermode不正確的真正原因,感興趣的可以看下。這裡再來重複下xfermode坑如何避免。

最終大總結,如果想讓porterduffxfermode按照預期demo(或者效果圖)的效果影象實現,必須滿足以下條件:

1、關閉硬體加速。(實際為開啟硬離屏快取)

2、兩個bitmap大小盡量一樣。

3、背景色為透明色。

4、如果兩個bitmap位置不完全一樣,可能也是預期效果,只不過你看到的效果和你自己腦補的預期效果不一致。

所以,為了避免這些坑,我把view分為了兩個,第一階段是乙個view,第二階段是乙個view。當第一段view執行完之後,把該view截圖,轉換為bitmap交給第二個view。同時第乙個view設定gone來避免過度繪製,第二個view繪製的實際上是兩個bitmap,並且開啟硬離屏快取來實現xfermode的正確效果。

//解決硬體加速的bug

setlayertype(view.layer_type_hardware, null);

//將第乙個view的bitmap交給第二個view

mwowview.startanimate(wowsplashview.getdrawingcache());

最後,在使用動畫讓第二個view從0擴大到數倍,同時改變透明度就達到我們想要的效果了。

這互動炸了 收藏集 掘金

晚上叫外賣,開啟餓了麼,發現推了乙個版本,更新以後,點開了個雞腿,哇,互動炫炸了。本文同步自wing的地方酒館 不過還是有槽點。我是無意中才發現可以左右滑動的。這。你不告訴我,我怎麼知道左右可以滑。本文同步自wing的地方酒館 寫在前面 寫這段話的時候,已經是夜裡3點了。別問我為什麼這麼拼,一切為了...

回來三周了,這三周

從成都回來之後,到現在一共三周了,感覺,這三周學到的東西比我過去一年學到的東西都要多,尤其是開始刷專題之後。從成都回來之後有那麼幾個感覺,第乙個感覺是題沒有那麼神了,都是一些常規的題目,一步步的學都能做的會。第二個感覺是人沒有那麼神了,以前感覺那些會做acm題目的都是大神,現在感覺,他們為什麼能做出...

記錄狗血的這週末 我心態炸了

事情是這樣的,昨天中午我多吃了一碗飯 再次回到電腦前,他莫名其妙的不讓我執行所有和torch相關的程式了 只要我執行就會出現下邊這句話 key already registered with the same priority groupspatialsoftmax無奈翻譯一下 我也不懂這是什麼問題...