`
come_for_dream
  • 浏览: 120315 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Android之-----Frame帧动画(Animation)

 
阅读更多

                  Android之-----Frame帧动画

 

     大家见到最多的就是Frame动画了,我们Android中当在也少不了它,它的使用更加简单,只需要创建一个对象来表示Frame动画,添加并启动 播放就OK了。Frame动画跟gif动画同出一辙,大家对gif也应该很熟悉了吧,gif格式本身就可以做成动画效果,我们只要轻轻松松来播放它就可以 实现动画效果了,我们先对gif图像进行解码,然后将每帧动画连续绘制播放出来就可以实现动画效果了。

 

          下面来我们一起创建一个Frame帧动画,实现动画的图片:

 1.拷贝到资源文件夹下面:


2.drawable下面创建一个frame.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/girl_1" android:duration="200" />
    <item android:drawable="@drawable/girl_2" android:duration="200" />
    <item android:drawable="@drawable/girl_3" android:duration="200" />
    <item android:drawable="@drawable/girl_4" android:duration="200" />
    <item android:drawable="@drawable/girl_5" android:duration="200" />
    <item android:drawable="@drawable/girl_6" android:duration="200" />
    <item android:drawable="@drawable/girl_7" android:duration="200" />
    <item android:drawable="@drawable/girl_8" android:duration="200" />
    <item android:drawable="@drawable/girl_9" android:duration="200" />
    <item android:drawable="@drawable/girl_10" android:duration="200" />
    <item android:drawable="@drawable/girl_11" android:duration="200" />
</animation-list>
 以下对上面各个属性的说明:

 

android:oneshot    是指是否只播放一次
 item               用于指定图片
 android:drawable    指定特定的图片
 android:duration   是指播放到该图片的时候要停留多长时间
 animation-list     指定动画的图形

 

然后我们的activity_main.xml中定义代码如下:

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/tvImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</RelativeLayout>
 

 

 

然后我们的MainActivity.java中的代码如下

 

@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		TextView tvImage=(TextView)findViewById(R.id.tvImage);
		//绑定帧动画
		tvImage.setBackgroundResource(R.drawable.frame);		
                //获得帧动画对象
                final AnimationDrawable animationDraw=(AnimationDrawable) tvImage.getBackground();
              

                /**
		 * 以下几行代码比较重要,现在做详细的讲解
		 * getMainLooper():取到主线程中的消息处理对象
		 * myQueue():获得主线程所处理的消息队列
		 * addIdleHandler(hander):添加空闲的回调,即当主线程处理完消息队列中的事件之后才会调用hander对象中的回调方法。
		 * animationDraw.start():在MessageQueue.IdleHandler()内部类中条用该方法启动动画
		 */
		//取得主线程的消息处理对象
		getMainLooper().myQueue().addIdleHandler(new 	MessageQueue.IdleHandler() {
			
			@Override
			public boolean queueIdle() {
				//启动动画
				animationDraw.start();
				
				return false;
			}
		});
	
	}
 

 

试想假若在取得帧动画对象后直接条用start()方法来启动动画,是否可以正常执行帧动画呢?

结果是不可以的,因为直接调用的话start()方法,帧动画对象并没有真正的完成绑定。

动画内部的绑定是通过时间完成的。因为在执行完

 final AnimationDrawable animationDraw=(AnimationDrawable) tvImage.getBackground();

方法之后,其内部会发送一个事件给主线程的消息队列中,主线程有一个消息处理器来进行内部事件的处理。只有等待内部事件处理完成之后,调用start()方法才能起作用,从而启动动画

为了获知主线程的内部事件处理完成,进行了如下代码的处理:

 

getMainLooper().myQueue().addIdleHandler(new 	MessageQueue.IdleHandler() {
			
			@Override
			public boolean queueIdle() {
				//启动动画
				animationDraw.start();
				
				return false;
			}
		});

 

  • 大小: 13.3 KB
分享到:
评论

相关推荐

    帧动画 frameanimation

    - 在`&lt;animation-list&gt;`内添加多个`&lt;item&gt;`标签,每个`&lt;item&gt;`代表一帧,指定`android:drawable`为对应的图片资源,并设置`android:duration`表示该帧显示的时间(单位为毫秒)。 2. **在代码中使用帧动画**: - ...

    Android---Frame动画

    在Android开发中,帧动画(Frame Animation)是一种常见的动画效果,它通过连续播放一系列静态图像来模拟动态效果。本文将深入探讨如何在Android项目中应用帧动画,包括使用`AnimationDrawable`和`ImageView`实现这...

    玩转Android---2D图形及动画---Frame动画

    这篇博文"玩转Android---2D图形及动画---Frame动画"显然会深入探讨如何在Android平台上创建和管理帧动画。帧动画是一种将一系列静态图像连续播放以产生动态效果的技术,常见于游戏和应用程序中的过渡效果。 首先,...

    Android Animation Frame逐帧动画

    Frame动画是Android中用于创建序列动画的一种方法,类似于传统的电影制作,通过连续播放多帧静态图片来形成连续的视觉效果。与Tween动画不同,Tween动画是通过对对象属性(如平移、旋转、缩放等)进行平滑过渡来实现...

    Android Animation Frame逐帧动画2

    在Android开发中,动画是提升用户...总之,Android的Frame动画是创建简单动画的有效手段,适用于像翻页、旋转等需要连续显示多帧图像的场景。通过理解其原理和实现方式,开发者可以灵活地创建各种富有创意的动画效果。

    Frame Animation 帧动画Demo

    在Android中,帧动画主要通过`&lt;animation-list&gt;`标签在XML资源文件中定义。这个`&lt;animation-list&gt;`是`&lt;selector&gt;`的一个子类,它允许我们指定一系列的`&lt;item&gt;`,每个`&lt;item&gt;`对应一帧图片。以下是一个基本的帧动画...

    Android代码-Android-Animation-Set

    Drawable Animation / 帧动画 / Frame 动画 English explanation can go to read this article Ⅲ. Property Animation / 属性动画 English explanation can go to read this article Ⅳ. Ripple Effect / Touch ...

    Android 用Animation-list实现逐帧动画

    本篇将深入讲解如何利用`Animation-list`在Android中实现逐帧动画。 一、`Animation-list`基础 `Animation-list`是Android XML动画资源的一种类型,它定义了一组子项(通常为ImageView的源),这些子项按照指定的...

    帧动画 Frame Animation

    **帧动画**是一种在Android平台上创建动态效果的方式之一。通过快速切换一系列图像来模拟动画的效果,这种方式类似于传统的翻页动画书。在Android开发中,可以通过两种主要的方式来实现帧动画:一种是通过代码编程...

    Android frame 帧动画demo

    在Android开发中,帧动画(Frame Animation)是一种常见的动态效果实现方式,它通过连续播放一系列静态图像来模拟连续动作,类似于传统的电影制作原理。在本示例中,“Android帧动画demo”将展示如何在Android应用中...

    安卓帧动画FrameAnimation例子

    在Android开发中,帧动画(Frame Animation)是一种常见的动画效果,它通过连续播放一系列静态图像来创建动态效果,类似于传统的电影胶片。本教程将基于提供的"安卓帧动画FrameAnimation例子"来深入探讨帧动画的使用...

    02_FrameAnimation逐帧动画Demo下载

    在Android中,我们可以使用`&lt;animation-list&gt;`标签来定义帧动画,并将其放入XML资源文件中。`AnimationSample`项目提供的就是一个演示如何创建和使用帧动画的实例。 首先,创建帧动画需要一个`res/anim`目录(如果...

    Animation-list实现逐帧动画(Android).zip

    `Animation-list`是Android系统提供的一种用于实现逐帧动画的工具,特别适用于制作简单的2D游戏或动态图标等效果。本篇文章将详细探讨如何利用`Animation-list`来创建逐帧动画。 首先,`Animation-list`是XML布局...

    Android 序列帧动画,开始,结束监听的解决Demo.zip

    在Android开发中,序列帧动画(Frame Animation)是一种常见的动态效果实现方式,它通过连续播放一系列静态图片来创建动画效果,类似于电影胶片的工作原理。本Demo主要关注如何在Android中实现序列帧动画,并添加...

    Android动画介绍-帧动画

    这个XML文件将包含`&lt;animation-list&gt;`标签,其中的每个`&lt;item&gt;`标签代表一帧,`android:drawable`属性指定了帧的图片资源,`android:duration`则定义了该帧持续的时间(以毫秒为单位): ```xml &lt;animation-list ...

    Animation(帧动画)

    在Android开发中,动画是提升用户体验的关键因素之一。帧动画(Animation)是Android提供的一种基本动画类型,适用于创建一系列连续的图像,就像电影胶片一样,通过快速播放这些图像来形成动态效果。本教程将深入讲解...

    安卓listview相关相关-通过Animation-list实现将图片进行逐帧动画的播放.rar

    总的来说,通过Animation-list在ListView中实现图片逐帧动画,能够增加应用的交互性和趣味性,但同时也需要开发者具备一定的Android图形处理和动画知识。希望这个资源能对你在Android开发过程中实现类似功能提供帮助...

    使用Animation-list实现等待加载动画效果

    `Animation-list`是Android系统提供的一种用于创建帧动画的视图,常用于实现等待加载、旋转图标等动态效果。本教程将详细讲解如何使用`Animation-list`来创建一个简单的等待加载动画。 首先,我们需要了解`...

    Android逐帧(Frame)动画

    在`&lt;animation-list&gt;`内,添加多个`&lt;item&gt;`元素,每个`&lt;item&gt;`代表一帧,设置`android:drawable`为对应的帧图片,并通过`android:duration`指定每帧显示的时间(以毫秒为单位)。 ```xml &lt;animation-list xmlns:...

    Android 帧(frame)动画

    在Android开发中,帧动画(Frame Animation)是一种常见的动态效果实现方式,它通过连续播放一系列静态图片来模拟动画效果。这种技术尤其适用于那些不需要复杂交互和高性能要求的简单动画场景。接下来,我们将深入...

Global site tag (gtag.js) - Google Analytics