1. 單個雨點的行為
2. 完善雨點的行為和構造下雨場景
3. 在xml中定義可以控制下雨的屬性
1. 單個雨點的行為: 一條線段在運動
起始點:startx , starty;
終止點:stopx, stopy;
自定義view的框架類
public自定義單個雨點rainviewabstract
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) }}
}}
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 將雨點 效果和 行為 抽象出來
* 雨點的速度和長度是可變的
* 雨點的傾斜角度是可變的
* 雨點的位置是可變的
public2.2 定義多個雨點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() }}
在 新增抽象 baseview 方法: protected abstract void init();
class mythread extendsthread 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...