Android 顯示view的粒子爆炸/綻放效果

Linux編程

點擊右側關注,免費入門到精通!

文章來源於Android技術雜貨鋪

照例先上圖

這個庫做了什麼?

它可以以粒子的形式顯示任何view的粒子動畫效果,你可以下載DEMO來查看效果

功能

支持任何view

可靈活配置粒子大小和形狀

可靈活配置粒子動畫

形狀

在該庫中,支持三種粒子形狀

圓形

矩形

星型

代碼中,你首先需要設置形狀分發器

Bloom.with('activity').setParticleRadius(15).setShapeDistributor(newCircleShapeDistributor())//orsetShapeDistributor(newRectShapeDistributor())//orsetShapeDistributor(newStarShapeDistributor()).boom(view);

什麼是形狀分發器?

ParticleShapeDistributor基礎類:

publicabstractclassParticleShapeDistributor{publicabstractParticleShapegetShape(BloomParticleparticle);}

允許你為每個粒子設置對應的形狀

在類CircleShapeDistributor中, 設置每個粒子為圓形

在類 RectShapeDistributor中, 設置每個粒子為矩形

在類StarShapeDistributor中, 設置每個粒子為星型

關於自定義形狀分發器和形狀

怎麼設置一個自定義形狀分發器或者形狀?

自定義分發器

繼承類ParticleShapeDistributor然後給每個粒子返回 形狀 .

自定義形狀

我們來看一下 形狀的基類:

publicabstractclassParticleShape{privatefloatmRadius;privatefloatmCenterX;privatefloatmCenterY;privatePathmPath;publicParticleShape(floatcenterX,floatcenterY,floatradius){mCenterX=centerX;mCenterY=centerY;mRadius=radius;mPath=newPath();}publicfloatgetRadius(){returnmRadius;}publicfloatgetCenterX(){returnmCenterX;}publicfloatgetCenterY(){returnmCenterY;}publicabstractvoidgenerateShape(Pathpath);publicPathgetShapePath(){returnmPath;}}

當你需要做到自定義粒子形狀時,繼承這個類,然後做到generateShape方法,你需要注意這里提供的參數是粒子的中心點坐標(x,y),以及它的最大半徑

最後,讓我們做到三種形狀的隨機效果:

代碼:

Bloom.with(this).setParticleRadius(5).setShapeDistributor(newParticleShapeDistributor(){@OverridepublicParticleShapegetShape(BloomParticleparticle){switch(mRandom.nextInt(3)){case0:returnnewParticleCircleShape(particle.getInitialX(),particle.getInitialY(),particle.getRadius());case1:returnnewParticleRectShape(2,2,particle.getInitialX(),particle.getInitialY(),particle.getRadius());//設置圓角效果case2:returnnewParticleStarShape(particle.getInitialX(),particle.getInitialY(),particle.getRadius());}returnnewParticleCircleShape(particle.getInitialX(),particle.getInitialY(),particle.getRadius());}}).setEffector(newBloomEffector.Builder().setDuration(800).setAnchor(view.getWidth()/2,view.getHeight()/2).build()).boom(view);

截圖:

效果器

BloomEffector是該庫最重要的類 , 您可以通過以下方式構建效果器:

newBloomEffector.Builder().setDuration(800).setAnchor(view.getWidth()/2,view.getHeight()/2).build()

我們來看看效果器可以使用的所有方法:

功能點描述

錨點

錨點可以控制所有粒子的初始運動方向, 原理是所有粒子都與這個錨點坐標(x,y)計算角度,以獲得粒子的下一個運動角度

例如將錨點設置為視圖中心點的坐標,則所有粒子將與中心點的坐標計算角度,即所有粒子將相對於中心點偏移,最終粒子動畫效果如下:

速度

控制粒子的移動速度

粒子的速度將從你設置的速度範圍中取一個隨機值

公式如下:

floatrandomSpeed=mRandom.nextFloat()*(mMaxSpeed-mMinSpeed)+mMinSpeed;

縮放

控制粒子的縮放值

粒子的所防止將從你設置的縮放範圍中獲取隨機值

公式如下:

floatscale=mRandom.nextFloat()*(mMaxScale-mMinScale)+mMinScale

傾斜

控制粒子的傾斜

粒子的傾斜將從你設置的偏斜範圍中獲取隨機值

公式如下:

floatskew=mRandom.nextFloat()*(mMaxSkew-mMinSkew)+mMinSkew;

旋轉

控制粒子的旋轉加速度,如果未設置此值,則粒子不會旋轉

粒子的旋轉動畫將從你設置的旋轉速度範圍中獲取隨機值

公式如下:

floatangelInRadsAcc=(float)(accelerationAngle*Math.PI/180f)//x軸加速度accelerationX=(float)(value*Math.cos(angleInRadsAcc));//y軸加速度accelerationY=(float)(value*Math.sin(angleInRadsAcc));

加速度

控制粒子加速度和加速度方向,加速度方向由你設定的加速度角度決定,計算方法如下:

floatangelInRadsAcc=(float)(accelerationAngle*Math.PI/180f)//x軸加速度accelerationX=(float)(value*Math.cos(angleInRadsAcc));//y軸加速度accelerationY=(float)(value*Math.sin(angleInRadsAcc));

加速度以像素/平方毫秒為單位:

floatfinalTranslateX=accelerationX*milliSecond*milliSecond;floatfinalTranslateY=accelerationY*milliSecond*milliSecond;

淡出

控制粒子的淡出效果,事實是控制粒子的alpha值, 淡出開始時間可以是[0-duration]

監聽器

你可以通過以下方法設置監聽器:

Bloom.with(this).setParticleRadius(5).setBloomListener(newBloomListener(){@OverridepublicvoidonBegin(){//動畫開始}@OverridepublicvoidonEnd(){//動畫結束}}).boom(view);

如果對你的開發起到幫助,請給作者一個star

https://github.com/samlss/Bloom

推薦↓↓↓

?16個技術公眾號】都在這里!

涵蓋:工程師大咖、源碼共讀、工程師共讀、數據結構與算法、黑客技術和網路安全、大數據科技、編程前端、Java、Python、Web編程開發、Android、iOS開發、Linux、數據庫研發、幽默工程師等。

萬水千山總是情,點個 「好看」 行不行

分享到Facebook

 


不知道如何找適合的對象?歡迎加官方LINE → Line ID:@shesay
戀愛小秘書免費一對一諮詢!
✔追蹤我的YouTube:https://www.youtube.com/@datenami
✔追蹤我的TikTok:https://www.tiktok.com/@datnami

 

配對成功的關鍵:參加實體交友活動

erose主題派對與戀愛小秘書創辦人娜米表示:「透過各種有趣的實體活動,不僅能親眼真實見到異性,也能在活動進行中讓大家很輕鬆自然的認識彼此、聊天互動,能更快速的找到適合的對象。」

結合大數據用心篩選 + 客製化條件配對

戀愛小秘書團隊已經成功替4000位以上的未婚男女配對成功,這個驚人成果背後的秘密在於「高度客製化服務」,跟每位客戶深度訪談,瞭解客戶真正的特質及需求,從「契合度」提高速配率。

訪談結果結合專屬的人格分析測驗與數據配對分析,精緻化的操作,締造高速配率!

除此之外,戀愛小秘書團隊還會定期追蹤客戶的後續狀況,目的是希望協助客戶發展長期且穩定的伴侶關係。

實名認證防造假!隱私保護最安心!

採用「實名認證」的制度,不僅是把關顧客的身份,避免已婚人士或動機不單純者的加入,更對客戶資料嚴格保密,讓客戶們能在安全且有隱私的狀況下認識另一半。

多元有趣的主題活動,豐富你的社交生活

戀愛小秘書團隊每個月都會規劃豐富多元的實體活動,從戶外踏青、娛樂遊戲、手作、料理課程到桌遊活動,希望客戶們能從歡樂的氣氛中認識彼此。

透過實體活動讓大家先有初步的接觸,然後再為會員們做「客製化」的約會安排。

另外針對想提升自身魅力的客戶,也有投資理財、形象穿搭等講座可供選擇。

追求脫單,先勇敢跨出你的第一步

許多單身者為了心中理想的對象條件,在還沒認識新朋友時,就先限制了自己。建議以認識新朋友的心態,積極參與活動,並適當的設限,才能真正為自己帶來戀愛的機會!勇敢跨出第一步吧!

♡ 現在就和戀愛小秘書娜米聊聊吧Line ID:@shesay

♡ 追蹤娜米的臉書粉絲團

她來報好康

 

SheSay 專注在 兩性、愛情等領域
建立專屬女生觀點的品牌形象
堅持「在第一時間掌握男女的時事議題」
將時下最流行的話題網羅、呈現。

馬上測算你的戀愛密碼

戀愛小秘書-娜米

單身很久?一直被分手?
從生日就看出你的戀愛疑難雜症!
娜米的戀愛數字密碼來幫你了。