自定義清理動畫

2021-08-22 04:44:26 字數 2013 閱讀 4952

先上圖:

再附上:原始碼位址

上面的自定義動畫效果,有以下三個關鍵點:

1,背景顏色變化;

2,中心位置風車的旋轉;

3,四周小圈圈,吸收進中心位置;

下面詳細介紹它們實現方式:

實際整體控制動畫的流暢性,是利用屬性動畫輔助的:

manim = valueanimator.ofint(0, 100);

manim.setduration(30 * 1000);

manim.addupdatelistener(new valueanimator.animatorupdatelistener()

});@override

protected

void

ondraw(canvas canvas)

利用屬性動畫,在 onanimationupdate 監聽裡面,invalidate 重走 ondraw 重繪;

背景色變化

manim.addupdatelistener(new valueanimator.animatorupdatelistener() 

});@override

protected

void

ondraw(canvas canvas)

mpaint.setshader(mlgradient);

canvas.drawrect(0, 0, getwidth(), getheight(), mpaint);

// 風扇 旋轉

// ...省略**

// 衝擊的 圈圈

// ...省略**

// 底部文案

// ...省略**

}

風車旋轉
// ...省略**

mscanbitmap = bitmaputils.getbitmapfromresourcewithhighquality(getcontext().getresources(), r.drawable.manage_icon_scan_fs, 268, 268);

manim.addupdatelistener(new valueanimator.animatorupdatelistener()

});@override

protected

void

ondraw(canvas canvas)

// 衝擊的 圈圈

// ...省略**

// 底部文案

// ...省略**

}

衝擊的圈圈
// 隨機生成某個方向的 圈圈

private scoreanimationview.circle obtainnewcircle(int where) else

if (where == 1) else

if (where == 2) else

if (where == 3) else

if (where == 4) else

if (where == 5)

return circle;

}/**

* 新增新的一組圈圈,到螢幕裡;

* mcurrentnexttime 會逐漸變大的,每間隔 next_new_time 的時間,會增加一組圈圈,顯得看著連貫衝擊感;

*/private

void

addnewcircles()

}@override

protected

void

ondraw(canvas canvas) else

}addnewcircles();

mcurrentnexttime += loop_time;

// 底部文案

// ...省略**

}

自定義動畫

在製作自定義動畫時,有以下八個樣式可供選擇 animation name 動畫名稱 元素所應用的動畫名稱,必須與規則 keyframes 配合使用,因為動畫名稱由 keyframes 定義。animation duration 動畫時間 設定物件動畫的持續時間 animation timing fu...

CustomAnim自定義動畫

android只提供了4種基本動畫效果,除了可以疊加效果外,我們還可以進行自定義動畫。mainactivity.class不變 package com.customanim.customanim import android.os.bundle import android.view.view pu...

自定義動畫效果

demotitle charset utf 8 src bootstrap js jquery.min.js script div1 style head animateh2 params,speed easing fn p 用於建立自定義動畫的函式。這個函式的關鍵在於指定動畫形式及結果樣式屬性物件...