package com.fireview;
import java.io.InputStream;
import java.util.Random;
import java.util.Vector;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.view.MotionEvent;
import android.view.View;
import com.dot.Dot;
import com.dot.DotFactory;
import com.dot.LittleDot;
import com.firework.R;
public class MyView extends View {
final String LOG_TAG = MyView.class.getSimpleName();
public static final int ID_SOUND_UP = 0;
public static final int ID_SOUND_BLOW = 1;
public static final int ID_SOUND_MULTIPLE = 2;
final static int TIME = 5; // 圈数
private Vector<Dot> lList = new Vector<Dot>();
LittleDot[] ld = new LittleDot[200];
private DotFactory df = null;
boolean running = true;
Bitmap backGroundBitmap;
Context mContext;
public static SoundPlay soundPlay;
public MyView(Context context) {
super(context);
// TODO Auto-generated constructor stub
df = new DotFactory();
new MyThread().start();
mContext = context;
backGroundBitmap = ReadBitMap(mContext, R.drawable.night);
backGroundBitmap = resizeImage(backGroundBitmap, 480, 800);
initSound(mContext);
}
public static void initSound(Context context) {
soundPlay = new SoundPlay();
soundPlay.initSounds(context);
soundPlay.loadSfx(context, R.raw.up, ID_SOUND_UP);
soundPlay.loadSfx(context, R.raw.blow, ID_SOUND_BLOW);
soundPlay.loadSfx(context, R.raw.multiple, ID_SOUND_MULTIPLE);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawBitmap(backGroundBitmap, 0, 0, null);
synchronized (lList) {
for (int i = 0; i < lList.size(); i++) {
lList.get(i).myPaint(canvas, lList);
}
}
invalidate();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
if (event.getAction() == MotionEvent.ACTION_DOWN) {
Dot dot = null;
int rand = (int) (Math.random() * 99);
dot = df.makeDot(mContext, rand, (int) event.getX(),
(int) event.getY());
synchronized (lList) {
lList.add(dot);
soundPlay.play(ID_SOUND_UP, 0);
}
}
return true;
}
public boolean isRunning() {
return running;
}
public void setRunning(boolean running) {
this.running = running;
}
public Bitmap ReadBitMap(Context context, int resId) {
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inPreferredConfig = Bitmap.Config.RGB_565;
opt.inPurgeable = true;
opt.inInputShareable = true;
// 获取资源图片
InputStream is = context.getResources().openRawResource(resId);
return BitmapFactory.decodeStream(is, null, opt);
}
public Bitmap resizeImage(Bitmap mBitmap, int w, int h) {
Bitmap BitmapOrg = mBitmap;
int width = BitmapOrg.getWidth();
int height = BitmapOrg.getHeight();
int newWidth = w;
int newHeight = h;
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap tmp = Bitmap.createBitmap(BitmapOrg, 0, 0, width, height,
matrix, true);
return tmp;
}
class MyThread extends Thread {
// 新建一个进程类来处理重画
// 用于控制烟火在空中滞留的时间
int times = 0;
public void run() {
Dot dot = null;
while (running) {
try {
Thread.sleep(100);
} catch (Exception e) {
System.out.println(e);
}
synchronized (lList) {
// 防止画面的烟花个数多于50个
while (lList.size() > 50) {
System.out.println("当前数目超过50");
for (int i = 0; i < 10; i++) {
lList.remove(i);
}
}
// 自动添加烟火
if (lList.size() <= 2) {
Dot tmp = null;
int rand = (int) (Math.random() * 99);
Random random = new Random();
tmp = df.makeDot(mContext, rand, random.nextInt(480),
50 + random.nextInt(300));
lList.add(tmp);
}
}
for (int i = 0; i < lList.size(); i++) {
dot = (Dot) lList.get(i);
if (dot.state == 1 && !dot.whetherBlast()) {
dot.rise();
}
// 如果是whetherBlast()返回的是true,那么就把该dot的state设置为2
else if (dot.state == 1 && dot.state != 2) {
dot.state = 2;
soundPlay.play(ID_SOUND_BLOW, 0);
} else if (dot.state == 3) {
}
// 规定,每个爆炸点最多是TIME圈,超过就会消失
if (dot.circle >= TIME) {
// 在空中滞留一秒才消失
if (times >= 10) {
dot.state = 4;
times = 0;
} else {
times++;
}
// dot.state = 4;
}
}
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
android烟花粒子效果 (102个子文件)
proguard.cfg 1KB
.classpath 356B
MyView.java 4KB
R.java 4KB
DotAnimFW.java 4KB
DotTwo.java 3KB
Dot.java 3KB
DotFive.java 3KB
Animation.java 3KB
DotSix.java 3KB
DotOne.java 2KB
DotFour.java 2KB
DotThree.java 2KB
SoundPlay.java 2KB
FireWorkActivity.java 1KB
LittleDot.java 1KB
DotFactory.java 1009B
night.jpg 92KB
up.ogg 53KB
blow.ogg 19KB
multiple.ogg 12KB
fw5_07.png 34KB
fw5_06.png 33KB
fw5_08.png 30KB
fw4_07.png 29KB
fw3_07.png 29KB
fw3_08.png 29KB
fw4_08.png 28KB
fw3_06.png 28KB
fw3_09.png 27KB
fw3_10.png 26KB
fw5_09.png 26KB
fw4_09.png 26KB
fw4_06.png 26KB
fw5_05.png 26KB
fw3_11.png 25KB
fw3_12.png 25KB
fw3_05.png 24KB
fw3_13.png 24KB
fw3_14.png 24KB
fw4_10.png 24KB
fw4_05.png 23KB
fw4_13.png 23KB
fw4_12.png 23KB
fw2_09.png 23KB
fw2_08.png 22KB
fw4_11.png 22KB
fw2_10.png 22KB
fw2_07.png 20KB
fw4_04.png 19KB
fw5_04.png 19KB
fw3_04.png 19KB
fw2_11.png 19KB
fw2_06.png 18KB
fw_06.png 16KB
fw_07.png 16KB
fw_05.png 16KB
fw_08.png 15KB
fw5_10.png 15KB
fw2_05.png 14KB
fw_04.png 14KB
fw_09.png 14KB
fw_10.png 12KB
fw3_03.png 12KB
fw_03.png 11KB
fw2_04.png 11KB
fw5_11.png 9KB
fw4_03.png 9KB
fw_11.png 8KB
fw2_03.png 7KB
fw5_03.png 7KB
fw_02.png 6KB
fw3_02.png 5KB
fw_12.png 5KB
fw4_02.png 4KB
ic_launcher.png 4KB
fw5_13.png 4KB
fw5_12.png 4KB
trail5.png 4KB
trail2.png 4KB
trail3.png 4KB
trail1.png 4KB
fw2_02.png 4KB
trail4.png 4KB
trail6.png 4KB
fw5_14.png 3KB
fw5_02.png 3KB
ic_launcher.png 3KB
fw5_15.png 2KB
fw4_01.png 2KB
fw_13.png 2KB
ic_launcher.png 2KB
fw3_01.png 2KB
fw5_01.png 1KB
fw2_01.png 1KB
fw_01.png 933B
org.eclipse.core.resources.prefs 86B
.project 811B
project.properties 361B
AndroidManifest.xml 712B
共 102 条
- 1
- 2
资源评论
- hufei200820082014-08-29效果一般吧,很多地方都可以找到类似的Demo
- alike2222014-05-04效果还不错 没做适配屏幕 呵呵 学习了 代码好多
段星星
- 粉丝: 274
- 资源: 27
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- J211-T1B-A-VB一款SOT23封装P-Channel场效应MOS管
- J210-VB一款SOT23封装P-Channel场效应MOS管
- J210-T1B-A-VB一款SOT23封装P-Channel场效应MOS管
- Suno V3 AI音乐生成神器,助你秒变音乐大师,suno AI音乐使用教程
- 自适应极化滤波完成P/S波分离
- 0b40adff-950d-44cf-88e6-f4a64292b638.apk
- J209-VB一款SOT23封装P-Channel场效应MOS管
- OLED12864模块(IIC接口)中文说明书.pdf
- 22304010116工管余文贤.bak
- 电路各单元电路的特点与作用
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功