最近在模拟一个android游戏,其中看到一个下雪的效果。到网上搜了很久发现大部分用的都是搜索引擎用的粒子效果模拟的。

自己没用过android的游戏引擎,于是就决定自己写一个吧。

网上找到一个“天女散花”的demo,稍加改造就成这个下雪的demo。天女散花下载地址;点击打开链接

下雪的效果,无非就是让屏幕上的“雪花”的图片不停的被重绘。

这里下雪的动作,需要用一个线程控制。

 /** 负责做界面更新工作 ,实现下雪*/private RefreshHandler mRedrawHandler = new RefreshHandler();class RefreshHandler extends Handler {@Overridepublic void handleMessage(Message msg) {//snow.addRandomSnow();snow.invalidate();sleep(100);}public void sleep(long delayMillis) {this.removeMessages(0);sendMessageDelayed(obtainMessage(0), delayMillis);}};

线程启动的时候,初始化雪花图片,把图片加载到内存之中。

然后让线程每隔一段时间重绘一次,重绘的时候增加y轴的距离,达到下雪的效果。

 @Overridepublic void onDraw(Canvas canvas) {super.onDraw(canvas);for (int x = 0; x < 10; x += 1) {if (snows[x].y >= view_height) {snows[x].y = 0;addRandomSnow();}// 雪花下落的速度snows[x].y += 5;//雪花飘动的效果if (RNG.nextBoolean()) {// 随机产生一个数字,让雪花有水平移动的效果int rng = RNG.nextInt(3);snows[x].x += 2 - rng;}canvas.drawBitmap(bitmap_snows[x / 6], ((float) snows[x].x),((float) snows[x].y), mPaint);}}

雪花的初始位置是y轴的顶点,我这里设置了10朵雪花。开始的时候,随机产生10个x轴方向的数字,作为雪花再x轴的起始位置。

当雪花“飘”出了屏幕之后,y坐标重新置0,x坐标也重新产生。其中为了达到雪花灵动的效果,随机产生一个x轴的飘动效果。

当然,做的效果不是太好,可以优化一下:比如,多增加雪花图片,达到下雪时雪花有近有远的效果。

欢迎有兴趣的朋友补充……

下载地址:android下雪demo

android 模拟下雪的效果相关推荐

  1. 用纯css模拟下雪的效果

    下雪效果只是一类效果的名称,可以是红包雨等一些自由落体的运动效果,本文就是用纯css模拟下雪的效果,更多效果大家可以自行发挥. 1.前言 由于公司产品的活动,需要模拟类似下雪的效果.浏览器实现动画无非 ...

  2. CSS:模拟下雪效果动画制作教程

    下雪效果只是一类效果的名称,可以是红包雨等一些自由落体的运动效果,本文就是用纯css模拟下雪的效果,更多效果大家可以自行发挥. 1.前言 由于公司产品的活动,需要模拟类似下雪的效果.浏览器实现动画无非 ...

  3. 纯css模拟下雪效果

    效果如其名,想必都见过下雪(可能南方人除外哈哈),但下雪效果只是一类效果的名称,可以是红包雨等一些自由落体的运动效果,本文就是用纯css模拟下雪的效果. 1.前言 由于公司产品的活动,需要模拟类似下雪 ...

  4. android下雪动画demo,Android的漂浮动画,下雪动画效果剖析.doc

    Android的漂浮动画,下雪动画效果剖析 Android 的漂浮动画,下雪动画效果 先看下效果: 1.先得了解下canvas.drawBitmap(mBitmap, mSrcRect, mDestR ...

  5. 基于粒子(Points)模拟雨雪天气效果

    目录 功能描述 最终效果 准备工作 实现原理 参数配置 核心代码 功能描述 在基于THREE.js的场景中,实现雨雪天气效果,可设置下雨.雪的范围.位置.量级以及下落速度. 最终效果 雪 雨 准备工作 ...

  6. Android开发_android界面效果全汇总

    (一)Activity页面切换的效果 先介绍下左右滑动切换Activity,对于复杂的手势原理一样,具体后述. 主要原理为监控触屏事件和手势事件,在触屏事件处理函数中调用手势事件处理函数,表示用户触屏 ...

  7. android中实现毛笔效果(View 中绘图)

    最近有一个项目设计一个APP实现通过触摸屏实现毛笔写字效果.传统的绘画板程序直接通过Path的moveTo和LineTo便可实现简单的线条绘画程序.然而要达到毛笔的笔锋效果则需要更为详细点的设计.我的 ...

  8. android中实现毛笔效果(View 中画图)

    近期有一个项目设计一个APP实现通过触摸屏实现毛笔写字效果.传统的绘画板程序直接通过Path的moveTo和LineTo便可实现简单的线条绘画程序.然而要达到毛笔的笔锋效果则须要更为具体点的设计.我的 ...

  9. Android实现圆弧滑动效果之ArcSlidingHelper篇

    前言 我们平时在开发中,难免会遇到一些比较特殊的需求,就比如我们这篇文章的主题,一个关于圆弧滑动的,一般是比较少见的.其实在遇到这些东西时,不要怕,一步步分析他实现原理,问题便能迎刃而解. 前几天一位 ...

  10. Android横向伸缩,Android 实现伸缩布局效果示例代码

    最近项目实现下面的图示的效果,本来想用listview+gridview实现,但是貌似挺麻烦的于是就用flowlayout 来addview实现添加伸缩的效果,实现也比较简单. mainActivit ...

最新文章

  1. 【AI】CelebA数据介绍、下载及说明
  2. oracle 修索引改空间_记一次Oracle分区表全局索引重修的历程
  3. php redis decr_对于高并发的问题你知道怎么处理吗?php接口如何处理并发问题
  4. 【嵌入式】C语言程序调试和宏使用的技巧
  5. 使用RMAN备份控制文件(control file)和系统参数文件(spfile)
  6. 002-请你回答一下单元测试、集成测试、系统测试、验收测试、回归测试这几步中最重要的是哪一步...
  7. SAP Spartacus home页面的layout,template,section和slots
  8. stylus导入时 报错These relative modules were not found
  9. 信息学奥赛C++语言:梯形面积
  10. 关于Breeze's MapHack 2.0的一些重要说明
  11. [JS] - onmusewheel事件(兼容IE,FF)
  12. wangEditor关闭粘贴样式的过滤,解决小程序中xml溢出报错问题
  13. Stream之Collectors(toList()
  14. 电子工程师的自我修养 - 恒流源电路分析
  15. android 得到屏幕尺寸 状态栏尺寸 标题栏尺寸
  16. c语言判断两个字母相等,C语言:比较两个字符串是否相等
  17. 洛谷P2530 [SHOI2001]化工厂装箱员
  18. git - - - .gitignore
  19. 精分合并抑郁康复经历分享:如何从死亡边缘回到生的海洋?
  20. stem32的简单应用

热门文章

  1. 去掉网页从网页中拷贝到word中段落带有的背景颜色
  2. 2014c语言考试题库,2014年腾讯校园招聘C语言考试真题
  3. 抓取腾讯校园招聘的第一页
  4. 在网页中插入MediaPlayer控件
  5. Ping命令进行网络检测
  6. 关于CS模式和P2P模式分发文件速度的思考
  7. 火狐浏览器设置背景图片
  8. SDRAM内存的接口和设计方法(并行输送接口)
  9. AHU HuffmanTree编码数据结构实验
  10. python bin函数_python bin函数