Android特效 粒子效果之雨

2021-09-07 02:14:57 字數 3086 閱讀 8189

1. 單個雨點的行為

2. 完善雨點的行為和構造下雨場景

3. 在xml中定義可以控制下雨的屬性

1. 單個雨點的行為: 一條線段在運動

起始點:startx , starty;

終止點:stopx,  stopy;

自定義view的框架類

public

abstract

class baseview extends

view

public

baseview(context context)

@override

final

protected

void

ondraw(canvas canvas)

else

}protected

abstract

void

logic();

protected

abstract

void

drawsub(canvas canvas);

@override

final

protected

void

ondetachedfromwindow()

private

boolean running = true

;

class mythread extends

thread catch

(interruptedexception e) }}

}}

自定義單個雨點rainview

public

class rainview extends

baseview

public

rainview(context context, attributeset attrs)

@override

protected

void

logic()

}@override

protected

void

drawsub(canvas canvas)

}

在布局檔案中使用

<

framelayout

xmlns:android

=""xmlns:tools

=""android:id

="@+id/container"

android:layout_width

="match_parent"

android:layout_height

="match_parent"

tools:context

="com.carloz.raineffect.mainactivity"

>

<

com.carloz.raineffect.v1.single_rain.rainview

android:layout_width

="match_parent"

android:layout_height

="match_parent"

android:background

="#ff000000"

/>

framelayout

>

效果如下:

2. 完善雨點的行為和構造下雨場景

2.1 將雨點 效果和 行為 抽象出來

* 雨點的速度和長度是可變的

* 雨點的傾斜角度是可變的

* 雨點的位置是可變的   

public

class

rainitem

private

float startx = 0;

private

float starty = 0; //

start point

private

float stopx = 0;

private

float stopy = 0; //

stop point

private

float sizex = 0;

private

float sizey = 0;

private

paint paint;

private

float

opt;

private

random random;

public

void

init()

public

void

draw(canvas canvas)

public

void

move() }}

2.2 定義多個雨點

在 新增抽象 baseview 方法: protected abstract void init();

class mythread extends

thread catch

(interruptedexception e) }}

}

public

class rainview extends

baseview

public

rainview(context context, attributeset attrs)

@override

protected

void

init()

}@override

protected

void

logic()

}@override

protected

void

drawsub(canvas canvas) }}

效果如下:

3. 在xml中定義可以控制下雨的屬性

android自定義view粒子效果之雨 續

上次描述的主要是雨點的繪製和運動,因為繪製可以自己控制了,邏輯也可以自己進行改變,所以還有很多事情可以做。首先可以改變雨點的顏色為自己想要的顏色,還可以讓每個雨點的顏色都隨機,更可以對畫面進行剪裁而出現類似電視上一圓形從小到大顯示裡面的畫面。聽起來好像很複雜,其實都是用固定的幾步,也就是固定自定義v...

canvas特效之刮刮樂和粒子特效

刮刮樂 lang en charset utf 8 name viewport content width device width,initial scale 1.0 刮刮樂title document.title 被刮開的面積 f.tofixed 2 if f 200 script body h...

cocos2dx之粒子效果

有時候我們需要做一些特殊的效果,比如子彈 的效果,當然我們用動畫也可以做出來,但是有時候發現利用粒子的效果去代替它會跟好看,我們先來看下粒子 void particledemolayer initlayer ccparticleflower,繼承的ccparticlesystemquad的,在coc...