當前位置:編程學習大全網 - 人物素材 - 仿微信聊天炸“屎”效果!!誒,就是玩!

仿微信聊天炸“屎”效果!!誒,就是玩!

Long Long Ago,微信8.0更新了壹個“炸屎”的新功能,還蠻有新意。

這兩天和朋友聊天觸發了這個功能,當時心想,誒!這文章素材不就來了嗎?!趁著周末時間,趕緊來實現壹下。

我們先來看看整體實現的效果:

本篇文章無技術含量,純屬娛樂,純屬娛樂

經過不斷試驗,反復查看了微信炸?的效果,基本上可以將其拆解成幾個小部分。

效果已經拆解了,技術方面具體實現思路如下:

Im聊天界面很簡單,壹個Recyclerview,分為左右兩個type,根據type值,分別加載左側和右側的布局。

這裏創建壹個實體類ImMsg,用於模擬聊天數據。

當然,聊天界面還需要加上輸入框,以及表情欄,這裏就不壹壹展示。

聊天界面搭建完成,接下來就開始進入正題,從扔炸彈開始。

上面已經分析了,扔炸彈的過程其實是壹個類似拋物線的過程,從右側聊天發送出去開始到碰到左側?結束。

看到扔炸彈的過程,第壹反應就是用貝塞爾曲線來解決炸彈路線的問題,炸彈的行進路線比較簡單,這裏用二階貝塞爾曲線就能實現。

我們都知道,要實現二階貝塞爾曲線,至少得知道兩個點的數據,壹個是 控制點 ,壹個是 終點 的坐標。

從上圖就可以基本知道,控制點在開始點和終點中間靠上的位置,這裏以屏幕寬和高來做計算,模擬出控制點。

終點同樣的道理,以起點為參考值,計算出坐標

有個控制點和終點的坐標,那就開始繪制二階貝塞爾曲線,實現貝塞爾曲線,Android中已經有現成的API,Path中有個 quadTo 方法,只要傳入控制點和終點的坐標,即生成貝塞爾曲線路徑。

有了path,接下來就是將炸彈按照貝塞爾曲線動起來,這裏就需要用到 屬性動畫 結合 PathMeasure ,讓炸彈?按照路徑移動。

微信的炸彈在拋物線的同時,是有個不斷翻轉的效果。

那我們實現就只需要監聽屬性動畫的更新listener,在監聽移動的過程中,設置rotation,使炸彈不斷進行翻轉。

我們來看效果:

接下來該說的就是炸彈的爆炸效果,這裏給出的方案是使用 Lottie 庫來加載。微信的爆炸效果還是蠻逼真,找了好久,都沒找到相應的素材,這裏屬實無法模擬。

於是就從 / 資源庫中找到了壹個類似爆炸效果的json文件,結合Lottie實現爆炸的效果。

Lottie的使用也很簡單,添加依賴

在layout中添加 LottieAnimationView

在炸彈執行拋物線結束時,開始播放

來看下炸彈結合爆炸的整體效果

當炸彈爆炸後,有壹個?被炸開的效果,如下圖。

從微信效果上看,存在7個?的表情,並且每個表情隨機傾斜角度,從爆炸動畫那裏為起點,由小到大彈出,形成由遠及近的效果。

實現的方案是自定義View繪制出7個相同的表情圖,利用Math.random隨機旋轉角度,且7個表情在可控範圍內隨機擺放。

至於由遠及近的效果,就需要對自定義的粑粑View進行縮放動畫。

另外,在?炸開的最後,?會向下移動並且同時漸變透明,所以在縮放動畫後開始平移動畫

translation和漸變動畫alpha。

最後使用AnimatorSet將動畫集合,開始播放。

看看效果。

基本上每個拆解的部分都已經實現,現在開始將IM界面、炸彈拋物線、爆炸效果以及最後的炸開效果合在壹起。

最後的最後,實現的效果如下:

在炸彈爆炸的瞬間,用戶頭像和表情都會有被震到抖動的效果,這裏就沒實現了,有興趣的小夥伴可以試試。

好了,本篇文章就到這了。覺得還湊合的,可以給個三連喲!

推薦閱讀:

玩會兒Compose,原神主題列表

Compose版來啦!仿自如裸眼3D效果

  • 上一篇:卡通老人素材
  • 下一篇:專題片《榜樣》觀後感
  • copyright 2024編程學習大全網