烟花效果,可以改变参数和图片改变烟花效果。
1.大烟花爆炸效果如下
2.小烟花爆炸效果如下
3.代码如下
3.1烟花粒子元素
import android.graphics.Bitmap;
public class Element {
public int color;
public Double direction;
public float speed;
public float x = 0;
public float y = 0;
public Bitmap bitmap;
public Element(int color, Double direction, float speed,Bitmap bitmap){
this.color = color;
this.direction = direction;
this.speed = speed;
this.bitmap = bitmap;
}
}
3.2烟花粒子控制类
import android.R.integer;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BlurMaskFilter;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.AvoidXfermode.Mode;
import android.os.Handler;
import android.provider.MediaStore.Video;
import android.util.Log;
import android.view.animation.AccelerateInterpolator;
import android.widget.Toast;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
import com.develop.GameSoundPool.GameSoundPool;
import com.develop.PopStars.R;
import com.develop.PopStars.Util.Utils;
public class Firework {
private final String TAG = this.getClass().getSimpleName();
final float screenWidthMeasure = 720;
private final static int BIG_DEFAULT_ELEMENT_COUNT = 200;//大烟花爆炸数量
private final static int MIDDLE_DEFAULT_ELEMENT_COUNT = 200;
private int BIG_DEFAULT_DURATION = 3000;
private final static float BIG_DEFAULT_LAUNCH_SPEED = 3;
private final static float BIG_DEFAULT_ELEMENT_SIZE = 8;
private final static int SMALL_DEFAULT_ELEMENT_COUNT = 8;//小星星爆炸数量
private int SMALL_DEFAULT_DURATION = 1300;//烟花持续时间
private final static float SMALL_DEFAULT_LAUNCH_SPEED = 18;//烟花分散速度
private final static float SMALL_DEFAULT_ELEMENT_SIZE = 8;//烟花颗粒大小
private final static float DEFAULT_WIND_SPEED = 6;
private final static float DEFAULT_GRAVITY = 6;
private Paint mPaint;
private int count; // count of element
private int duration;
private int[] colors;
private int color;
private float launchSpeed;
private float windSpeed;
private float gravity;
private int windDirection; // 1 or -1
private Location location;
private float elementSize;
GameSoundPool sounds;//烟花爆炸声音控制
private ValueAnimator animator;
private float animatorValue;
private ArrayList<Element> elements = new ArrayList<Element>();
private AnimationEndListener listener;
Context context;
private int mode = 0;
private float