android学习笔记---55_frame动画的实现,Java技术qq交流群:JavaDream:251572072
来源:互联网 发布:小苍零食淘宝店 编辑:程序博客网 时间:2024/05/18 00:00
android学习笔记---55_frame动画的实现,Java技术qq交流群:JavaDream:251572072
Java技术qq交流群:JavaDream:251572072
2013/5/16
55_frame动画的实现
------------------------------
Android提供了2种动画:
1> Tween动画,通过对 View 的内容进行一系列的图形变换 (包括平移、缩放、旋转、改变透明度)来实现动画效果。动画效果的定义可以采用XML来做也可以采用编码来做。Tween动画有4种类型:
2> Frame动画,即顺序播放事先做好的图像,跟电影类似。开发步骤:
(1)把准备好的图片放进项目res/ drawable下。
(2)在项目的res目录下创建文件夹anim,然后在anim文件夹下面定义动画XML文件,文件名称可以自定义。当然也可以采用编码方式定义动画效果(使用AnimationDrawable类)。
(3)为View控件绑定动画效果。调用代表动画的AnimationDrawable的start()方法开始动画。
--------------------------------------------------------------------------------------------
3.注意:帧动画其实相当于web页面中的gif动画。
-----------------------------------------------
4.下面是一个帧动画的例子的所有源码
-----------------------------------
a.新建android项目:takepicture
b./frameAnimation/res/drawable
新建这个文件夹,并且在其中新建:/frameAnimation/res/drawable/frame.xml
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<!-- android:oneshot="false"这里指定是否帧动画只播放一次 ,当为false
动画会循环播放,当为true会只播放一次
android:drawable="@drawable/girl_1":指定图片的位置
android:duration="200" :指定这张图片要停留多长时间。
item用于指定图片
只要放到drawable文件夹下,就属于图形,这里是动画图形
-->
<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>
-----------------------------------------------
c./frameAnimation/res/layout/main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
2013/5/16
55_frame动画的实现
------------------------------
Android提供了2种动画:
1> Tween动画,通过对 View 的内容进行一系列的图形变换 (包括平移、缩放、旋转、改变透明度)来实现动画效果。动画效果的定义可以采用XML来做也可以采用编码来做。Tween动画有4种类型:
2> Frame动画,即顺序播放事先做好的图像,跟电影类似。开发步骤:
(1)把准备好的图片放进项目res/ drawable下。
(2)在项目的res目录下创建文件夹anim,然后在anim文件夹下面定义动画XML文件,文件名称可以自定义。当然也可以采用编码方式定义动画效果(使用AnimationDrawable类)。
(3)为View控件绑定动画效果。调用代表动画的AnimationDrawable的start()方法开始动画。
--------------------------------------------------------------------------------------------
3.注意:帧动画其实相当于web页面中的gif动画。
-----------------------------------------------
4.下面是一个帧动画的例子的所有源码
-----------------------------------
a.新建android项目:takepicture
b./frameAnimation/res/drawable
新建这个文件夹,并且在其中新建:/frameAnimation/res/drawable/frame.xml
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<!-- android:oneshot="false"这里指定是否帧动画只播放一次 ,当为false
动画会循环播放,当为true会只播放一次
android:drawable="@drawable/girl_1":指定图片的位置
android:duration="200" :指定这张图片要停留多长时间。
item用于指定图片
只要放到drawable文件夹下,就属于图形,这里是动画图形
-->
<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>
-----------------------------------------------
c./frameAnimation/res/layout/main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView" />
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView" />
</LinearLayout>
----------------------------------
d./frameAnimation/src/com/credream/frame/FrameAnimationActivity.java
package com.credream.frame;
----------------------------------
d./frameAnimation/src/com/credream/frame/FrameAnimationActivity.java
package com.credream.frame;
import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.os.MessageQueue;
import android.widget.TextView;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.os.MessageQueue;
import android.widget.TextView;
public class FrameAnimationActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//1.找到这个textView
TextView textView = (TextView) this.findViewById(R.id.textView);
//2.给这个textView设置背景。
textView.setBackgroundResource(R.drawable.frame);//绑定Frame动画图形
//3.这里绑定的是drawable.frame.xml文件
final AnimationDrawable drawable = (AnimationDrawable) textView.getBackground();
// 4.drawable.start();//启动动画,在这里启动动画,是没有效果的,因为在这里绑定还没有完成
//5.动画绑定的内部实现,实际上是,当 final AnimationDrawable drawable = (AnimationDrawable) textView.getBackground();
//这里绑定完后,会发一个事件消息,到主线程的消息队列中,主线程中的消息处理器得到这个消息后会处理这个消息。
//当处理完之后才可以调用drawable.start();//启动动画,这时候调用才是有效的
//6.取到主线程中的消息处理对象。getMainLooper(),可以看到主线程就是通过looper来处理消息队列的。
//getMainLooper().myQueue()这里是当主线程处理完后才会调用handler中的回调方法addIdleHandler()
getMainLooper().myQueue().addIdleHandler(new MessageQueue.IdleHandler() {
//7.这里用匿名内部类实现
public boolean queueIdle() {
drawable.start();//启动动画
return false;
}
});
}
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//1.找到这个textView
TextView textView = (TextView) this.findViewById(R.id.textView);
//2.给这个textView设置背景。
textView.setBackgroundResource(R.drawable.frame);//绑定Frame动画图形
//3.这里绑定的是drawable.frame.xml文件
final AnimationDrawable drawable = (AnimationDrawable) textView.getBackground();
// 4.drawable.start();//启动动画,在这里启动动画,是没有效果的,因为在这里绑定还没有完成
//5.动画绑定的内部实现,实际上是,当 final AnimationDrawable drawable = (AnimationDrawable) textView.getBackground();
//这里绑定完后,会发一个事件消息,到主线程的消息队列中,主线程中的消息处理器得到这个消息后会处理这个消息。
//当处理完之后才可以调用drawable.start();//启动动画,这时候调用才是有效的
//6.取到主线程中的消息处理对象。getMainLooper(),可以看到主线程就是通过looper来处理消息队列的。
//getMainLooper().myQueue()这里是当主线程处理完后才会调用handler中的回调方法addIdleHandler()
getMainLooper().myQueue().addIdleHandler(new MessageQueue.IdleHandler() {
//7.这里用匿名内部类实现
public boolean queueIdle() {
drawable.start();//启动动画
return false;
}
});
}
}
- android学习笔记---55_frame动画的实现,Java技术qq交流群:JavaDream:251572072
- android零碎要点---android开发者的福音,59_1 Android的界面设计工具,直接拖拉就可以设计界面,Java技术qq交流群:JavaDream:251572072
- CSharp学习视频分享与开发技术QQ交流群
- CSharp学习视频分享与开发技术QQ交流群
- CSharp学习视频分享与开发技术QQ交流群
- CSharp学习视频分享与开发技术QQ交流群
- C#学习视频分享与开发技术QQ交流群
- C#学习视频分享与开发技术QQ交流群
- CSharp学习视频分享与开发技术QQ交流群
- JAVA编程技术初学者交流QQ群27091059
- Qt学习笔记02_Frame类族
- JAVA交流QQ群43829453
- 软件工程师IT技术英语交流QQ群
- Android学习笔记之 仿QQ登录界面的实现
- CSharp、.Net学习视频分享与开发技术QQ交流群
- 实现QQ在线交流
- Android交流(资料)QQ群 187486866
- JAVA、ASP.NET(C#) QQ群交流!
- poj 3349 snowflake 哈希表
- Java对象创建方式及JVM对字符串处理
- 回文字符串
- Java学习笔记(AWT组件 之 按钮)
- Java数据类型与各数据库类型对应一览表
- android学习笔记---55_frame动画的实现,Java技术qq交流群:JavaDream:251572072
- 在日常工作中应用看板
- CSS 中的分离、抽象和层叠
- 并查集(Union-Find)算法介绍(转)
- [025] 微信公众帐号开发教程第1篇-引言
- 获取GridView中RowCommand的当前索引行
- C++实验题——大数类 tzc
- 关键字
- 为10G RAC加节点的详细步骤