- 浏览: 82844 次
- 性别:
- 来自: 广州
最新评论
-
Tony_Lee-S:
已经说得很明白了吧?“把list强转成Serializable ...
在android中用 Intent 传递 List类型的数据(转) -
zhiduo5:
Activity与Service之间传递参数的介质这个怎么弄啊 ...
在android中用 Intent 传递 List类型的数据(转) -
mathlove:
很有用的内容
一个Android下的自动下载歌词的代码(转)
Android有两种动画,一种是tweened animation(渐变动画) ,主要用于控件的,大小缩放,透明度等,另一种是frame by frame(逐帧动画),也就是我今天要讨论的动画。逐帧动画顾名思义就是一帧一帧的播放动画,就像动画片的播放原理一样,它是通过不挺得替换图片,当替换图片的速度大于人眼的反应时间时就会给人一种画面在动的感觉。
废话不多说直接上代码:
1:在res文件夹下面建立一个文件夹anim;
2:在anim文件夹下建立一个文件firefox_animation.xml(名字自己任意定义)如下:
说明:你想变多少张图片就要有几个item,在每一个item中 duration是定义这张图片存在的时间以毫秒为单位,drawable是图片的路径
3:定义布局文件
4:Activy中的代码:
5:完成点击start按钮动画开始。
问题来了,如果我想不需要点击按钮,一进入Activity就让动画动起来怎么办?
聪明的同学肯定会说直接把startAnimation()方法放到onCreate()方法中不就可以了吗,甚至还会有同学说在onCreate()方法中代码只会在创建的时候执行,应该是放到onResume()方法中,这样无论怎么样代码都会执行,动画效果都会出来,事实上呢?要相信科学少年,结果是什么,勤奋的同学自己44就知道了。
如果想要在一进入页面的时候就执行动画我们就要对代码做一个小小的修改,同时我们去掉了那两个按钮。
其他的部分不变代码如下:
运行之后您会惊喜的发现,动画执行了。
小弟浅见:应该是在onCreate()方法中AnimationDrawable虽然初始化了,但是并没有完全,动画只会走一帧,永远停在第一张图片上,加入ViewTreeObserver观察者,ViewTreeObserver能够一直监听LayoutTree中的布局绘制情况,而OnPreDrawListener他在图片初始化完了之后会自动执行回调方法OnPreDrawListener,这样动画就动起来。
以上就是我使用逐帧动画时的一些小心得,有什么不对的地方还请各位大虾指点,谢谢。
转自:http://blog.csdn.net/gzhan1603/article/details/7576667
废话不多说直接上代码:
1:在res文件夹下面建立一个文件夹anim;
2:在anim文件夹下建立一个文件firefox_animation.xml(名字自己任意定义)如下:
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:duration="300" android:drawable="@drawable/home_hotapp" /> <item android:duration="300" android:drawable="@drawable/home_hotapp_click" /> </animation-list>
说明:你想变多少张图片就要有几个item,在每一个item中 duration是定义这张图片存在的时间以毫秒为单位,drawable是图片的路径
3:定义布局文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <ImageView android:id="@+id/imageview1" android:layout_width="100px" android:layout_height="100px" android:src="@anim/firefox_animation"> </ImageView> <Button android:id="@+id/start" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Start"> </Button> <Button android:id="@+id/start_once" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Start_once"> </Button> </LinearLayout>
4:Activy中的代码:
public class MainA extends Activity { private AnimationDrawable draw = null; private Button start = null; private Button startOnce = null; private boolean isoneshot = true; public void onCreate(Bundle bundle) { super.onCreate(bundle); this.setContentView(R.layout.main); ImageView view = (ImageView)findViewById(R.id.imageview1); draw = (AnimationDrawable)view.getDrawable(); start = (Button)findViewById(R.id.start); start.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub startAnimation(); } }); startOnce = (Button)findViewById(R.id.start_once); startOnce.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub if(isoneshot) { startOnce.setText("startOnce"); } else { startOnce.setText("Play Repace"); } draw.setOneShot(isoneshot); isoneshot = !isoneshot; } }); } private void startAnimation() { if(draw.isRunning()) { draw.stop(); } else { draw.stop(); draw.start(); } } }
5:完成点击start按钮动画开始。
问题来了,如果我想不需要点击按钮,一进入Activity就让动画动起来怎么办?
聪明的同学肯定会说直接把startAnimation()方法放到onCreate()方法中不就可以了吗,甚至还会有同学说在onCreate()方法中代码只会在创建的时候执行,应该是放到onResume()方法中,这样无论怎么样代码都会执行,动画效果都会出来,事实上呢?要相信科学少年,结果是什么,勤奋的同学自己44就知道了。
如果想要在一进入页面的时候就执行动画我们就要对代码做一个小小的修改,同时我们去掉了那两个按钮。
其他的部分不变代码如下:
publicclass Main2 extends Activity { private AnimationDrawable draw = null; publicvoid onCreate(Bundle bundle) { super.onCreate(bundle); this.setContentView(R.layout.main); ImageView view = (ImageView) findViewById(R.id.imageview1); view.setBackgroundResource(R.anim.firefox_animation); draw = (AnimationDrawable) view.getBackground(); view.getViewTreeObserver().addOnPreDrawListener(opdl); } OnPreDrawListener opdl=new OnPreDrawListener(){ publicboolean onPreDraw() { draw.start(); returntrue; } }; }
运行之后您会惊喜的发现,动画执行了。
小弟浅见:应该是在onCreate()方法中AnimationDrawable虽然初始化了,但是并没有完全,动画只会走一帧,永远停在第一张图片上,加入ViewTreeObserver观察者,ViewTreeObserver能够一直监听LayoutTree中的布局绘制情况,而OnPreDrawListener他在图片初始化完了之后会自动执行回调方法OnPreDrawListener,这样动画就动起来。
以上就是我使用逐帧动画时的一些小心得,有什么不对的地方还请各位大虾指点,谢谢。
转自:http://blog.csdn.net/gzhan1603/article/details/7576667
发表评论
-
SQLite多线程读写实践及常见问题总结(转)
2013-02-07 11:04 3041基本操作的部分,大家都很熟悉了,这里根据个人切身经验,总结了 ... -
android内存溢出的解决方法(转)
2013-02-07 11:23 8251. 当项目中包含大量图片,或者图片过大 方法1:等比例缩 ... -
android中的跨进程通信的实现——远程调用过程和aidl(转)
2013-02-07 19:35 1349android在设计理念上强调组件化,组件之间的依赖性很小。 ... -
在EditText/TextView中插入表情图片、样式、下划线等(转)
2012-08-22 12:01 1605EditText: 通常用于显示文字,但有时候也需要在文字中 ... -
自定义Tab选项卡(转)
2012-08-21 08:44 1507效果: 代码: import android.app. ... -
android设置button透明度(转)
2012-08-18 22:09 1309Button或者ImageButton的背景设为透明或者半透明 ... -
Android中的TabHost(转)
2012-08-17 14:50 2231介绍 有时,我们想在一个window中显示多个视图,这时就需 ... -
Android开发之蓝牙(Bluetooth)操作(二)--修改本机蓝牙设备的可见性,并扫描周围可用的蓝牙设备(转)
2012-08-15 16:54 1477一. 修改本机蓝牙设备的可见性 二. 扫描周围可用的蓝牙设备 ... -
Android开发之蓝牙(Bluetooth)操作(一)--扫描已经配对的蓝牙设备(转)
2012-08-15 16:49 1744一. 什么是蓝牙(Bluetooth)? 1.1 BuleT ... -
一个Android下的自动下载歌词的代码(转)
2012-08-15 13:41 12091. 原理是用Baidu音乐搜索的连接,拼参数进去读取歌词。 ... -
ViewPager多页面滑动切换以及动画效果(转)
2012-08-14 16:55 1905一、首先,我们来看一下效果图,这是新浪微博的Tab滑动效果。我 ... -
Android的Handler总结(转)
2012-08-14 14:18 926一、Handler的定义: 主要接受子线程 ... -
AsyncTask的用法(转)
2012-08-14 14:11 905在开发Android应用时必须遵守单线程模型的原则: Andr ... -
android 扫描SD卡与系统文件(转)
2012-08-11 16:12 1353当手机或模拟器开机时,会调用android的MediaScan ... -
android 怎样为多媒体文件生成缩略图(转)
2012-08-10 17:11 12871、Video 对于视频,取第一帧作为缩略图,也就是怎样从fi ... -
TextView 实现自动换行(转)
2012-08-10 16:44 1405package com.liao.intentservice; ... -
android:屏幕自适应(转)
2012-08-10 16:10 1406demo下载: http://www.eoeandroid.c ... -
listview加载性能优化ViewHolder (转)
2012-07-28 15:16 1466在android开发中Listview是一个很重要的组件,它以 ... -
android 应用程序Activity之间数据传递与共享的几种途径(转)
2012-07-19 11:03 15181.基于消息的通信机制 Intent ---boudle , ... -
Android进程间通信--消息机制及IPC机制实现(转)
2012-07-19 10:51 845一、概念及说明 Android ...
相关推荐
在Android开发中,逐帧动画是一种常见的动画效果,它通过连续播放一系列静态图像来创造出动态效果,类似于传统的电影制作方式。本源码着重探讨如何在Android应用中实现逐帧动画。 首先,我们要了解Android中的两种...
在这个特定的案例中,我们看到标题为“android逐帧动画”,描述提到有三张图片进行切换,每帧持续时间为50毫秒。这个例子展示了如何在Android应用中实现这种基本的动画效果。 首先,我们需要了解Android中的`...
"逐帧动画"是Android动画系统中的一个基础概念,尤其适用于创建连续动态效果,如人物行走、物体旋转等。本教程将深入探讨逐帧动画的工作原理、实现方式以及如何在实际项目中运用。 逐帧动画是一种通过连续播放一...
在Android应用开发中,逐帧动画是一种常见的动画形式,它通过连续播放一系列静态图像来创造出动态效果,类似于传统的动画制作过程。"Android 逐帧动画源码.zip" 提供了一个项目实例,帮助开发者深入理解这一技术。这...
下面我们将深入探讨如何在Android中实现逐帧动画,并了解相关知识点。 一、FrameAnimation简介 FrameAnimation是Android SDK提供的一种基于图像序列的动画机制,它通过在ImageView组件中连续显示一系列的静态图像来...
Android提供了多种动画类型,其中包括 Tween 补间动画和 Frame 逐帧动画。本篇文章将主要聚焦于Frame动画,这是一种通过连续显示不同帧图片来创建动画效果的技术。 **Frame动画原理:** Frame动画基于一系列连续的...
在Android应用开发中,逐帧动画是一种常见的动画形式,它通过连续播放一系列静态图像来创造出动态效果。这个"Android 逐帧动画源码.rar"压缩包包含了一个关于如何实现这种动画方式的源代码示例。下面,我们将深入...
在Android中,逐帧动画可以通过`AnimationDrawable`类来实现。`AnimationDrawable`是一个可绘制对象,可以作为视图的背景,并且可以像动画一样顺序播放其包含的帧。以下将详细介绍如何创建和使用逐帧动画。 首先,...
这个"Android逐帧动画源码.zip"文件包含了一个关于如何在Android应用中实现逐帧动画的示例项目,这对于开发者来说是宝贵的参考资料。 逐帧动画在Android中的实现主要依赖于`Animation`类家族,尤其是`Frame...
本篇文章将深入探讨Android逐帧动画的概念、实现方式以及相关的实践技巧。 逐帧动画的工作原理类似于传统的电影制作,通过连续播放多张图片来产生连续的动作。在Android中,这可以通过`AnimationDrawable`类来实现...
首先,我们要理解Android中的逐帧动画。在Android中,帧动画(Frame Animation)是一种简单易用的动画形式,它通过连续播放一系列静态图像(帧)来创造出动画效果。这些帧通常保存为图片资源(如PNG或JPEG),然后在...
在Android开发中,逐帧动画是一种常见的2D动画形式,尤其适用于游戏开发或者复杂的动态效果展示。本资源“逐帧动画源码”旨在提供一个深入理解逐帧动画工作原理的实例,帮助开发者快速掌握Android系统中如何实现这种...
在Android开发中,逐帧动画是一种常见的动画效果,它通过连续播放一系列静态图像来创造出动态效果,类似于传统的电影制作方式。本资源包“Android 逐帧动画源码.zip”提供了实现这种动画效果的源代码,适合对Android...