我在网上找 Android动画的时候发现,很多都是我上一篇哪个样子的文章。很少有一帧一帧的动画。请大家不要忘记传统动画。
下面就给个具体的XML例子,来定义一帧一帧的动画:
上面的XML就定义了一个Frame Animation,其包含6帧动画,6帧动画中分别应用了drawable中的6张图片:ball1,ball2,.....ball6 每帧动画持续50毫秒。

然后我们将以上XML保存在res/anim/文件夹下,命名为simple_animation.xml,显示动画的代码:

  1. <?xml version="1.0" encoding="UTF-8"?>
    <LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android"
    >
    <ImageView    
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_centerHorizontal="true"
    />
    <TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="aaaaaaaaaaaaaaaaaaaaa"

    />
    </LinearLayout>

Java 代码
public class AlarmAlert extends Activity
{

@Override
    protected void onCreate(Bundle savedInstanceState)    
    {
        super.onCreate(savedInstanceState);
setContentView(R.layout.mylayout);

ImageView img=(ImageView)findViewById(R.id.imageView);
img.setBackgroundResource(R.anim.simple_animation);

MyAnimationRoutine mar= new MyAnimationRoutine();
MyAnimationRoutine2 mar2= new MyAnimationRoutine2();
Timer t=new Timer(false);
t.schedule(mar,100);
Timer t2=new Timer(false);
t2.schedule(mar2,5000);

}    
class MyAnimationRoutine extends TimerTask{
@Override
public void run(){
    ImageView img=(ImageView)findViewById(R.id.imageView);
    AnimationDrawable frameAnimation=(AnimationDrawable)
    img.getBackground();
    frameAnimation.start();
    
}
}
class MyAnimationRoutine2 extends TimerTask{
@Override
public void run()
{
    ImageView img=(ImageView) findViewById(R.id.imageView);
    AnimationDrawable frameAnimation=(AnimationDrawable)
    img.getBackground();
    frameAnimation.stop();
}
}


代码运行的结果6张图片按照顺序的播放一次.有一点需要强调的是:启动Frame Animation动画的不能在OnCreate()中,因为在OnCreate()进行内部控制,所以我建子类,开始和停止方法。不然OnCreate()中启动动画,就只能看到第一张图片。
下面,阅读Android SDK中对AnimationDrawable的介绍,有个简单的了解:

AnimationDrawable
获取、设置动画的属性
int getDuration() 获取动画的时长
int getNumberOfFrames() 获取动画的帧数
boolean isOneShot()
Void setOneShot(boolean oneshot)
获取oneshot属性
设置oneshot属性
void inflate(Resurce r,XmlPullParser p,
AttributeSet attrs)
增加、获取帧动画
Drawable getFrame(int index) 获取某帧的Drawable资源
void addFrame(Drawable frame,int duration) 为当前动画增加帧(资源,持续时长)
动画控制
void start() 开始动画
void run() 外界不能直接掉调用,使用start()替代
boolean  isRunning() 当前动画是否在运行
void stop() 停止当前动画
AnimationDrawable
获取、设置动画的属性
int getDuration() 获取动画的时长
int getNumberOfFrames() 获取动画的帧数
boolean isOneShot()
Void setOneShot(boolean oneshot)
获取oneshot属性
设置oneshot属性
void inflate(Resurce r,XmlPullParser p,
AttributeSet attrs)
增加、获取帧动画
Drawable getFrame(int index) 获取某帧的Drawable资源
void addFrame(Drawable frame,int duration) 为当前动画增加帧(资源,持续时长)
动画控制
void start() 开始动画
void run() 外界不能直接掉调用,使用start()替代
boolean  isRunning() 当前动画是否在运行
void stop() 停止当前动画

Android一帧一帧的动画相关推荐

  1. Android 动画之一 Drawable Animation —— 逐帧(Frame)动画

    这几天打算把动画的基础都捋一下,就像我们已经知道的,动画大致有三类:(property动画,Tween动画.Frame动画),今天开始,我们就依次来看一下,他们都是怎么使用的吧^^. 今天先来看一下逐 ...

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

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

  3. Android 实现简单的帧动画

    此帧动画主要用到了AnimationDrawable类和Drawable资源文件实现,在XML文件中animation-list元素为根节点,item节点定义每一帧,表示一个drawable资源的帧和 ...

  4. Android卡顿掉帧问题分析之原理篇

    当用户抱怨手机在使用过程中存在卡顿问题的时候,会严重影响用户对手机品牌的好感和应用APP的体验,从而导致用户对手机品牌的忠诚度降低或应用APP的装机留存率下降.所以无论是手机设备厂商还是应用APP开发 ...

  5. Android卡顿掉帧问题分析之工具篇

    Android卡顿掉帧问题分析之原理篇 Android卡顿掉帧问题分析之工具篇 Android卡顿掉帧问题分析之实战篇 Android卡顿掉帧问题分析之原理篇 公众号:Android技术之家Andro ...

  6. Glide加载gif动画只播放一次的方法 Glide加载gif动画先显示最后一帧再开始播放动画导致闪屏的解决方案

    场景: Android App利用ViewPager制作引导页,然后利用Glide加载gif动画. 问题: 1.Glide加载gif动画如何只播放一次? 2.Glide加载gif动画,在viewPag ...

  7. android 获取视频第一帧作为缩略图

    今天,简单讲讲android里如何获取一个视频文件的第一帧作为缩略图显示在界面上. 之前,我说个最近需要从服务器下载视频文件,但是下载后肯定需要显示视频的缩略图在界面上给用户看,于是想到显示视频的第一 ...

  8. android中帧布局效果,Android开发实现布局帧布局霓虹灯效果示例

    本文实例讲述了android开发实现布局帧布局霓虹灯效果.分享给大家供大家参考,具体如下: 效果图: 实现方式: framelayout中,设置8个textview,在主函数中,设计颜色数组,通过有序 ...

  9. java多线程霓虹灯,Android开发实现布局帧布局霓虹灯效果示例

    本文实例讲述了Android开发实现布局帧布局霓虹灯效果.分享给大家供大家参考,具体如下: 效果图: 实现方式: FrameLayout中,设置8个TextView,在主函数中,设计颜色数组,通过有序 ...

  10. android获取摄像头视频帧数据

    1.思路 一.通过android的Camera.setPreviewCallback(PreviewCallback cb)监听回调. 二.此回调函数public void onPreviewFram ...

最新文章

  1. Java开发的环境搭建
  2. 亿级流量架构之服务限流思路与方法
  3. R语言在ggplot中使用变量指定柱状图的名称实战
  4. Appian宣布将Google AI 集成到RPA中
  5. Vue 兼容 ie9 的全面解决方案
  6. pytion3--用户定义的迭代器
  7. js高程读书笔记(1-3章)
  8. 关于微PE的那些事和重装系统
  9. 用计算机怎么转换进制,计算机各种进制转换方法
  10. Openssl(版本1.1.1)源码中的RSA加解密算法实现分析
  11. 0/1背包问题 - 如何理解 解空间
  12. 大学生vb计算机基础,大学计算机基础课程上机考试登录程序的VB实现
  13. 数据结构笔记(王道考研) 第八章:排序
  14. 从新生儿性别比例数据,看各地重男轻女程度高低
  15. stc15系列c语言pwm编程,分享一下stc15单片机的PWM波程序
  16. Halcon图像预处理-感兴趣区域(ROI)
  17. 【利用Altium Designer2018设计元器件原理图库】
  18. 1504.ICCVPartial Person Re-Identification 论文笔记
  19. 自己经验AP 月结对账过程
  20. MyEclipse安装Flash Builder插件

热门文章

  1. IOS之Core Foundation框架和Cocoa Foundation框架的区别
  2. [UVA 10529]Dumb Bones
  3. SQL server 数据库调用远程数据库存储过程的实现方法
  4. php常见问题辨析(二)
  5. linux下修改文件权限.
  6. WinForm 2.0 无代码DataGridView绑定
  7. 黑体std能商用_用产品诠释商用PC成功之道 惠普战66高性能商用一体机评测
  8. 接口与抽象类的应用(包括各自设计模式)
  9. 史上最全使用Nexus搭建Maven服务器详细配置
  10. 【译】WebSocket协议第五章——数据帧(Data Framing)