一、粒子属性
粒子图片,粒子大小,粒子缩放比例,粒子位置(X,Y),粒子移动方向与速度(X,Y坐标与时间t的关系)
计算粒子所处位置,绘制渲染
粒子系统,是大量基础图元构成的具有一定规律的不规律渲染图像。即要够成粒子系统,需要有基本图元,保持基本图元的一定规律性,并细化不规律性。
一个基本图元即是粒子系统中展示的一个粒子,有以下基本属性:粒子纹理【图片】,粒子的大小,粒子缩放,粒子的位置【平面坐标系中只有X,Y】,粒子移动方向与速度(X,Y坐标与时间T的关系)。
粒子属性基本信息保持一致,在各个变量细化时加入随机变量震动,从而实现统一大规律下不统一。
准备好所有粒子信息后,先检查粒子当前所处的位置,超出范围部分强制修改,然后绘制渲染粒子。
二、控件实现
构造方法,初始化基本数据:
public ParticleView(Context context) {
super(context);
}
public ParticleView(Context context, AttributeSet attrs) {
super(context, attrs);
initData(context);
initBitmapInfo();
initPaint();
}
public ParticleView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
/**
* 初始化绘制笔
*/
private void initPaint() {
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
// 防抖动
paint.setDither(true);
// 开启图像过滤
paint.setFilterBitmap(true);
}
/**
* 初始化粒子纹理
*/
private void initBitmapInfo() {
mStarOne = ((BitmapDrawable) mResources.getDrawable(R.drawable.star2)).getBitmap();
// mStarOne = ((BitmapDrawable) mResources.getDrawable(R.drawable.snow1)).getBitmap();
mStarOneWidth = mStarOne.getWidth();
mStarOneHeight = mStarOne.getHeight();
// mStarTwo = ((BitmapDrawable) mResources.getDrawable(R.drawable.star1)).getBitmap();
mStarTwo = ((BitmapDrawable) mResources.getDrawable(R.drawable.snow2)).getBitmap();
mStarTwoWidth = mStarTwo.getWidth();
mStarTwoHeight = mStarTwo.getHeight();
// mStarThree = ((BitmapDrawable) mResources.getDrawable(R.drawable.star3)).getBitmap();
mStarThree = ((BitmapDrawable) mResources.getDrawable(R.drawable.snow3)).getBitmap();