Android 雪花飄落

2021-07-09 15:15:18 字數 2526 閱讀 9765

2.1效果分析:

1. 每個雪花都是隨機的一張資源(總共五張),每一張轉為bitmap,然後在ondraw中繪製;

2. 每個雪花它的寬高是隨機的範圍,旋轉的角度是隨機的範圍,加速度也是隨機的;

3. 每個雪花不擁有乙個單獨的動畫,只用乙個動畫來控制所有的雪花每一幀的顯示;

4. 每個雪花的運動利用matrix實現(settranslate(),postrotate(),posttranslate())

2.2實現單個雪花飄落:

先實現單個雪花的飄落,新建singlesnowview extends view , 在他的內部新建乙個靜態的snow內部類,snow類提供乙個靜態的方法,初始化雪花的大小,旋轉角度以及加速度然後返回乙個snow例項:

public

class

singlesnowview

extends

view

return snow;

}@override

public string tostring() }}

每個雪花不擁有單獨的動畫,只有乙個動畫用於更新每一幀的動畫(更新位置和旋轉角度),最後在ondraw()中繪製

public

class

singlesnowview

extends

view

public

singlesnowview(context context, attributeset attrs)

public

singlesnowview(context context, attributeset attrs, int defstyleattr)

private

void

initdata()

// 雪花旋轉

msnow.rotation = msnow.rotation + (msnow.rotationspeed * secs);

// 請求重新去重新整理繪製介面

invalidate();

}});

manimator.setrepeatcount(valueanimator.infinite);

manimator.setduration(2000);

}@override

protected

void

ondraw(canvas canvas)

/*** 開始下雪

*/public

void

startsnow(int rangewidth)

manimator.start();

}/**

* 停止下雪

*/public

void

stopsnow()

}

在activity中的效果:

2.3.滿屏雪花飄落

既然乙個雪花可以了,那麼滿屏雪花飄落就很簡單了,無非就是將多個雪花放入集合中,在原來的基礎上修改一下就可以了:

public

class

snowview

extends

view

// 請求重新去重新整理繪製介面

invalidate();

}});

}} @override

protected

void

ondraw(canvas canvas)

// todo 下面計算幀速率

}/**

* 開始下雪

*/public

void

startsnow(int rangewidth)

public

intgetsnownumber()

/*** 新增雪花

*/public

void

addsnows(int snownumber, int rangewidth)

// 當前雪花數量疊加

msnownumber += snownumber;}}

}

2.4.最後在activity中測試
public

class

mainactivity

extends

activity

@onclick(r.id.tv_play)

private

void

startsnow()}};

handlerrain.postdelayed(runnablerain, 0);}}

js雪花飄落特效

呼叫 new snows 外掛程式封裝 注 固定引數不可在呼叫時配置 var pluginname snow defaults var snow function opt snow.prototype else if reset this sy isquick math.random this op...

Qt 實現桌面雪花飄落 修改1

今年聖誕節手癢簡單實現了乙個桌面雪花飄落的動畫背景,發給老婆體驗一下,提了些意見,進行了改進.今天改進了以下幾點 1.雪花旋轉了 2.加入了飄落時會左右飄動,想模擬風吹的感覺.很生硬,演算法還得優化 4.下落速度和左右飄的速度在一定的範圍內隨機生成 這個版本的 託管在github.com上了 備註 ...

簡單說 JavaScript實現雪花飄落效果

settimeout函式用來指定某個函式或某段 在多少毫秒之後執行。它返回乙個整數,表示定時器的編號,以後可以用來取消這個定時器。var timerid settimeout func code,delay setinterval函式的用法與settimeout完全一致,區別僅僅在於setinter...