AnimationDrawable animationDrawable; //逐帧动画//移动蝴蝶位置的定时器Timer tmrTranslate;TimerTask timerTask;ImageView iv; //存放蝴蝶的控件//蝴蝶当前位置float ivCurX;float ivCurY;//蝴蝶可飞的最大范围int maxWidth;int maxHeight;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//全屏getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);setContentView(R.layout.activity_main);//获得屏幕大小Display display = getWindowManager().getDefaultDisplay();DisplayMetrics displayMetrics = new DisplayMetrics();display.getMetrics(displayMetrics);maxWidth = displayMetrics.heightPixels;maxHeight = displayMetrics.widthPixels;//播放动画的控件iv = (ImageView)findViewById(R.id.iv_test);//初始化ivCurX = iv.getX();ivCurY = iv.getY();tmrTranslate = new Timer();//得到逐帧动画animationDrawable = (AnimationDrawable)iv.getDrawable();}//处理界面控件移动Handler handler = new Handler(){public void handleMessage(Message msg) {if(msg.what == 0x123){//移动 -5到5 的距离int changeX = (int)( Math.random() * 5)*2 -5;int changeY = (int)(Math.random()*5)*2 - 5;//蝴蝶的新位置float newX = ivCurX + changeX;float newY = ivCurY + changeY;//移动蝴蝶TranslateAnimation translateAnimation = new TranslateAnimation(ivCurX,newX,ivCurY,newY);translateAnimation.setFillAfter(true); //保留动画结果translateAnimation.setDuration(200);iv.startAnimation(translateAnimation); //开始飞//更新蝴蝶位置ivCurX = newX;ivCurY = newY;}}};/*** 开始动画*/public boolean onStart(View v){animationDrawable.stop();animationDrawable.start();//开始移动控件stopTimer();if(timerTask == null){timerTask = new TimerTask() {@Overridepublic void run() {handler.sendEmptyMessage(0x123);}};}tmrTranslate.schedule(timerTask,0,200);return true;}/*** 结束动画*/public boolean onStop(View v){animationDrawable.stop();stopTimer();return true;}/*** 停止定时器*/private void stopTimer(){if(timerTask != null){timerTask.cancel();timerTask = null;}}

动画xml文件

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"><item android:drawable="@drawable/butterfly_f01" android:duration="120"/><item android:drawable="@drawable/butterfly_f02" android:duration="120"/><item android:drawable="@drawable/butterfly_f03" android:duration="120"/><item android:drawable="@drawable/butterfly_f04" android:duration="120"/><item android:drawable="@drawable/butterfly_f05" android:duration="120"/><item android:drawable="@drawable/butterfly_f06" android:duration="120"/>
</animation-list>

蝴蝶飞舞- (补间动画+逐帧动画)相关推荐

  1. Android实现蝴蝶动画,蝴蝶飞舞- (补间动画+逐帧动画)

    AnimationDrawable animationDrawable; //逐帧动画 //移动蝴蝶位置的定时器 Timer tmrTranslate; TimerTask timerTask; Im ...

  2. Android动画——逐帧动画

    1.概述 Android 平台有一套完整的动画框架,在Android3.0之前有两种动画,一种方式是补间动画 Tween Animation.另一种叫逐帧动画 Frame Animation(也称Dr ...

  3. 安卓动画全解:补间动画(视图动画)、布局动画、属性动画、逐帧动画。动画Animation属性、Alpha属性、Scale属性、Translate属性、Rotate属性,动画集AnimationSet

    全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓动画全解:补间动画(视图动画).布局动画.属性动画.逐帧动画. 主要内容包含:动画Animation属性.Alpha属性.Scale属性.Tran ...

  4. 逐帧动画和补间动画的区别于各自的优缺点

    帧动画: 逐帧动画是在时间帧上逐帧绘制帧内容,由于是一帧一帧的画,所以逐帧动画具有非常大的灵活性,几乎可以表现任何想表现的内容. 由于逐帧动画的帧序列内容不一样,不仅增加制作负担而且最终输出的文件量也 ...

  5. Android逐帧动画和补间动画

    本篇博客来看一下Android中的逐帧动画和补间动画. 一.逐帧动画 逐帧动画也叫Drawable Animation. 在Android中实现逐帧动画,就是由设计师给出一系列状态不断变化的图片, 开 ...

  6. Android动画学习之补间动画和逐帧动画,移动互联网app开发

    | fromXScale | 指定动画开始时X轴上的缩放系数 | 值为1.0表示不再变化 | | fromYScale | 指定动画开始时Y轴上的缩放系数 | 值为1.0表示不再变化 | | toXS ...

  7. android动画之帧动画(drawable animation)和补间动画(view animation)

    帧动画 drawable animation使用比较简单,而且支持市场上所以API版本,下面简单贴下代码.帧动画,就像GIF图片,通过一系列Drawable依次显示来模拟动画的效果. 直接代码贴上 x ...

  8. android 张口逐帧动画,Android中实现一个简单的逐帧动画(附代码下载)

    场景 Android中的逐帧动画,就是由连续的一张张照片组成的动画. 效果 注: 实现 首先准备一组不同表情的照片,放在res/drawable下,然后在此目录下新建动画资源文件fairy.xml 这 ...

  9. CSS或JS实现逐帧动画方案

    什么是逐帧动画 逐帧动画是一种在连续的关键帧中分解动画动作,即在时间轴的每一帧上绘制不同内容并使之连续播放成动画的一种常见的动画形式.与CSS关键帧动画不同的是,逐帧动画每一帧需要自行定义:关键帧动画 ...

最新文章

  1. 为什么双层循环 冒泡排序_冒泡排序的双重循环理解
  2. Next Permutation
  3. 使用 husky 和 lint-staged 检查 Node.js 的代码一致性
  4. (9) ebj学习: Jpa的增删查改,CURD方法监听和命名查询
  5. python指定目录_python生成指定文件夹目录树
  6. 关于程序猿的六个问答题
  7. 2022 基于SpringBoot的高校食堂点评系统 大众点评系统
  8. linux mint 安装ssh
  9. Selenium批量下载抖音无水印高清视频
  10. 计算机游戏锁怎么打开,键盘锁住了怎么解锁_解锁键盘步骤操作一览
  11. 【Pytorch】pack_padded_sequence与pad_packed_sequence实战详解
  12. META-INF、WEB-INF分别是什么?
  13. 设计模式——设计模式中英文对照
  14. python将excel转换成图片_python-尝试将Excel文件保存为图片并加上水印-阿里云开发者社区...
  15. USACO 2015 January Contest Bronze——奶牛的旅行路线
  16. 51单片机 八音盒设计
  17. linux带source地址ping,实战经验:Linux Source NAT在Ping场景下的应用
  18. win7 安装ox oracle,windows 2012 R2 core安装0x800f0906 -mgmt-infra出现0x800f0906
  19. linux与windows双系统windows无法连网问题的解决
  20. Ubuntu16.04 搭建自动驾驶环境autoware全过程 + py2.7 tensorflow-gpu 安装

热门文章

  1. mac 设置mysql登录快捷键_mac系统快捷键
  2. Windows平台崩溃转储系统crashrpt的使用
  3. 分库分表中间件 Sharding-Sphere
  4. 数字逻辑中的最小完全集
  5. Athflow风盛行 KOREANO ESSENTIAL助力舒适表达
  6. 小森林顺序_电影小森林先看哪部 日韩两版你更心仪哪一部
  7. 对计算机系统进行软攻击的方法,计算机软件中安全漏洞检测方法研究
  8. 电影自助售票系统业务逻辑分析
  9. fmt.Sscanf
  10. C实现-8进制数转换为10进制数