Drawable animation可以加载Drawable资源实现帧动画。AnimationDrawable是实现Drawable animations的基本类。推荐用XML文件的方法实现Drawable动画,不推荐在代码中实现。这种XML文件存放在工程中res/drawable/目录下。XML文件的指令(即属性)为动画播放的顺序和时间间隔。

在XML文件中<animation-list>元素为根节点,<item>节点定义了每一帧,表示一个drawable资源的帧和帧间隔。此XML文件必须写在res资源文件目录下的anim文件夹下,

下面是一个XML文件的实例:

framebyframe.xml

  1. <animation-list xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:oneshot="false">
  3. <item android:drawable="@drawable/m1" android:duration="1000" />
  4. <item android:drawable="@drawable/m2" android:duration="1000" />
  5. <item android:drawable="@drawable/m3" android:duration="1000" />
  6. <item android:drawable="@drawable/m4" android:duration="1000" />
  7. <item android:drawable="@drawable/m5" android:duration="1000" />
  8. <item android:drawable="@drawable/m6" android:duration="1000" />
  9. <item android:drawable="@drawable/m7" android:duration="1000" />
  10. </animation-list>
  11. <!--
  12. oneshot :是否只播放一遍动画 true 播放一遍 false 循环播放
  13. 默认就是false
  14. -->

下面是StartActivity.java

  1. package com.example.lesson18_framebyframe;
  2.  
  3. import android.app.Activity;
  4. import android.content.Intent;
  5. import android.graphics.drawable.AnimationDrawable;
  6. import android.os.Bundle;
  7. import android.os.Handler;
  8. import android.view.Menu;
  9. import android.widget.ImageView;
  10.  
  11. public class StartActivity extends Activity {
  12. private ImageView imageView;
  13. private AnimationDrawable animationDrawable;
  14. @Override
  15. protected void onCreate(Bundle savedInstanceState) {
  16. super.onCreate(savedInstanceState);
  17. setContentView(R.layout.activity_start);
  18. //帧动画
  19. imageView = (ImageView) findViewById(R.id.imageView1);
  20.  
  21. //第一种方式实现的动画
  22. /*animationDrawable = (AnimationDrawable) getResources().getDrawable(R.anim.framebyframe);
  23. imageView.setBackgroundDrawable(animationDrawable);*/
  24.  
  25. //第二种方式实现的动画
  26. imageView.setBackgroundResource(R.anim.framebyframe);
  27.  
  28. animationDrawable = (AnimationDrawable) imageView.getBackground();
  29.  
  30. animationDrawable.start();
  31.  
  32. new Handler(){
  33. public void handleMessage(android.os.Message msg) {
  34. if(msg.what==1){
  35. Intent intent = new Intent(StartActivity.this,NextActivity.class);
  36. startActivity(intent);
  37. }
  38. };
  39. }.sendEmptyMessageDelayed(1, 7000);
  40.  
  41. //animationDrawable.setOneShot(false);是否循环播放
  42. //animationDrawable.stop();停止播放
  43. //animationDrawable.isRunning();//是否播放
  44. //animationDrawable.getNumberOfFrames();//播放帧
  45. //animationDrawable.getFrame(index); 返回制定索引的 Drawable对象
  46. //animationDrawable.getDuration(i);停留的时间
  47. }
  48.  
  49. @Override
  50. public boolean onCreateOptionsMenu(Menu menu) {
  51. // Inflate the menu; this adds items to the action bar if it is present.
  52. getMenuInflater().inflate(R.menu.start, menu);
  53. return true;
  54. }
  55.  
  56. }

布局文件:

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:paddingBottom="@dimen/activity_vertical_margin"
  6. android:paddingLeft="@dimen/activity_horizontal_margin"
  7. android:paddingRight="@dimen/activity_horizontal_margin"
  8. android:paddingTop="@dimen/activity_vertical_margin"
  9. tools:context=".StartActivity" >
  10.  
  11. <ImageView
  12. android:id="@+id/imageView1"
  13. android:layout_width="match_parent"
  14. android:layout_height="match_parent"
  15. android:layout_alignParentLeft="true" />
  16.  
  17. </RelativeLayout>

NextActivity.java

  1. package com.example.lesson18_framebyframe;
  2.  
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. import android.widget.TextView;
  6.  
  7. public class NextActivity extends Activity {
  8.  
  9. protected void onCreate(Bundle savedInstanceState) {
  10. // TODO Auto-generated method stub
  11. super.onCreate(savedInstanceState);
  12.  
  13. TextView tv = new TextView(this);
  14. tv.setText("启动界面到主界面完成");
  15.  
  16. setContentView(tv);
  17.  
  18. }
  19.  
  20. }

效果如下:

               

Android开发(25)--framebyframe帧动画并实现启动界面到主界面的跳转的更多相关文章

  1. Android(java)学习笔记198:Android下的逐帧动画(Drawable Animation)

    1.帧动画: 帧动画顾名思义,一帧一帧播放的动画就是帧动画. 帧动画和我们小时候看的动画片的原理是一样的,在相同区域快速切换图片给人们呈现一种视觉的假象感觉像是在播放动画,其实不过是N张图片在一帧一帧 ...

  2. Android(java)学习笔记141:Android下的逐帧动画(Drawable Animation)

    1. 帧动画: 帧动画顾名思义,一帧一帧播放的动画就是帧动画. 帧动画和我们小时候看的动画片的原理是一样的,在相同区域快速切换图片给人们呈现一种视觉的假象感觉像是在播放动画,其实不过是N张图片在一帧一 ...

  3. Android开发工程师文集-Activity生命周期,启动方式,Intent相关介绍,Activity详细讲解

    前言 大家好,给大家带来Android开发工程师文集-Activity生命周期,启动方式,Intent相关介绍,Activity详细讲解的概述,希望你们喜欢 Activity是什么 作为一个Activ ...

  4. Cocos2d-x开发实例介绍帧动画使用

    下面我们通过一个实例介绍一下帧动画的使用,这个实例如下图所示,点击Go按钮开始播放动画,这时候播放按钮标题变为Stop,点击Stop按钮可以停止播放动画. 下面我们再看看具体的程序代码,首先看一下看H ...

  5. Android开发(26)--补间动画(Tween)的实现

    补间动画(Tween Animation) 补间动画与逐帧动画在本质上是不同的,逐帧动画通过连续播放图片来模拟动画的效果,而补间动画则是通过在两个关键帧之间补充渐变的动画效果来实现的.补间动画的优点是 ...

  6. Android Tint着色与帧动画结合

    需求 最近遇到一个需求: 要求根据后台接口给的色值 显示不同色值的帧动画(UI给了三张透明色的图) 正常的帧动画 是配置在xml里三张静态图片 然后加载一下就完事了现有的静态图片是透明的 还没有填充颜 ...

  7. Android 学习之逐帧动画(Frame)

    帧动画就是将一些列图片.依次播放. 利用肉眼的"视觉暂留"的原理,给用户的感觉是动画的错觉,逐帧动画的原理和早期的电影原理是一样的. a:须要定义逐帧动画,能够通过代码定义.也能够 ...

  8. android中的逐帧动画

    在android中实现动画最简单的一种方式就是使用逐帧动画(AnimationDrawable).逐帧动画的原理同最古老的动画机制是一样的,通过快速的播放一组变化微小的图片,在人眼的视差时间下,达到一 ...

  9. cocos2d-x游戏开发(十六)帧动画

    欢迎转载:http://blog.csdn.net/dawn_moon/article/details/11775745 本来想写一下帧动画的,搜了一下网上好像有一大把,就懒得写了,直接贴代码. // ...

随机推荐

  1. lucent检索技术之创建索引:使用POI读取txt/word/excel/ppt/pdf内容

    在使用lucent检索文档时,必须先为各文档创建索引.索引的创建即读出文档信息(如文档名称.上传时间.文档内容等),然后再经过分词建索引写入到索引文件里.这里主要是总结下读取各类文档内容这一步. 一. ...

  2. .Net类的序列化和反序列化 - 进阶者系列 - 学习者系列文章

    今天看了下以前的一个工具的代码,其中涉及到.NET类的序列化和反序列化问题,所以就写一下. 这里说一下.NET类序列化的好处..NET类在序列化之前只是一个相对狭义的类.通过序列化,能够更好的保存该类 ...

  3. css3中webkit-box的用法(平分父元素)

    display:box;box-flex是css3新添加的盒子模型属性,它的出现可以解决我们通过N多结构.css实现的布局方式.经典的一个布局应用就是布局的垂直等高.水平均分.按比例划分.目前box- ...

  4. cocos2d-x3.2中将XCode发展project转移到VS2010可能会发生错误

    一些代码在线xcode写.我们希望我们自己的屌丝vs上述的实施,要重新构建它project,然后加载.但是绝对 没想到在VS里新建project再加入文件,编译后出现了好多错误.以下就把解决这些错误的 ...

  5. 第三方控件netadvantage UltraWebGrid如何生成带加号多级表数据也就是带子表

    1.看代码不解释: ds.Relations.Add("fk", ds.Tables[0].Columns["Id"], ds.Tables[1].Column ...

  6. oracle实例,数据库,服务器区别

    实例(instance) 实例是一个非固定的,基于内存的基本进程与内存结构.当服务器关闭时,实例就不存在了. 数据库(DataBase) 数据库指固定的,基于磁盘的数据文件,控制文件,日志文件,参数文 ...

  7. Printk 标志优先级别

    #define KERN_EMERG                  "<0>"       /* 致命级:紧急事件消息,系统崩溃之前提示,表示系统不可用   */# ...

  8. iOS基础 - 瀑布流

    一.瀑布流简介 瀑布流,又称瀑布流式布局.是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部.最早采用此布局的网站是Pint ...

  9. [转]Libev源码分析 -- 整体设计

    Libev源码分析 -- 整体设计 libev是Marc Lehmann用C写的高性能事件循环库.通过libev,可以灵活地把各种事件组织管理起来,如:时钟.io.信号等.libev在业界内也是广受好 ...

  10. AngularJS的初始化

    AngularJS的初始化 本文主要介绍AngularJS的自动初始化以及在必要的适合如何手动初始化. Angular <script> Tag 下面通过一小段代码来介绍推荐的自动初始化过 ...