动画的简单介绍
来源:互联网 发布:windows 开机启动 编辑:程序博客网 时间:2024/06/05 08:49
一、帧动画
res/drawable/frame_animaiton.xml
<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?><animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="true"> <item android:drawable="@drawable/a1" android:duration="1000"/> <item android:drawable="@drawable/a2" android:duration="1000"/> <item android:drawable="@drawable/a3" android:duration="1000"/> <item android:drawable="@drawable/a4" android:duration="1000"/></animation-list></span>oneshot的含义是:动画是否只播放一次
duration的含义是:该图片播放持续的时间
Animation.java
<span style="font-size:18px;">public class MainActivity extends Activity {private ImageView imageView;private Button button;private AnimationDrawable ad;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);imageView = (ImageView) findViewById(R.id.imageView);button = (Button) findViewById(R.id.button);imageView.setBackgroundResource(R.drawable.frame_animation);ad = (AnimationDrawable) imageView.getBackground(); //获得AnimationDraable对象button.setOnClickListener(new OnClickListener() {public void onClick(View v) {ad.start(); //动画开始播放}});}}</span>还有一点值得注意的是,getBackground这个方式异步的,它会在新的线程上运行,所以如果把ad.start()直接放在
imageView.getBackground下面就很有可能播放不出来了。原因是主线程执行ad.start()的方法优先于另外的一个线程执行getBackground加载图片。
二、Tween动画
(1)透明度
AlphaAnimation animation1 = new AlphaAnimation(0.0f, 1.0f); //从透明到不透明animation1.setDuration(2000); //动画显示的时间animation1.setRepeatCount(1); //重复一次,一共播放两次animation1.setRepeatMode(Animation.REVERSE); //重复的动作为反转animation1.setFillAfter(true); //停止在最后的位置imageView.startAnimation(animation1);
(2)缩放
ScaleAnimation animation2 = new ScaleAnimation(0.5f, 2.0f, 0.2f, 2.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); //参数的含义:X轴从50%-->200% Y轴从20%-->200% ,缩放点是相对于自身的50%,即中点animation2.setDuration(2000);animation2.setRepeatCount(1);animation2.setRepeatMode(Animation.REVERSE); imageView.startAnimation(animation2);
(3)旋转
<span style="font-size:18px;">RotateAnimation animation3 = new RotateAnimation(0, 180, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); //从0度旋转到180度,旋转的轴心是相对于自身的50%,即中心animation3.setDuration(2000);animation3.setRepeatCount(1);animation3.setRepeatMode(Animation.REVERSE); </span><pre name="code" class="java">imageView.startAnimation(animation3);
(4)平移
TranslateAnimation animation4 = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.5f, Animation.RELATIVE_TO_PARENT, 0.5f, Animation.RELATIVE_TO_PARENT, 0.5f);//相对于父窗体,X的起始位置是0(即图标当前所在的位置),X的移动距离是半个屏幕的像素//相对于父窗体,Y的起始位置是0.5f(即图标当前所在的位置往下半个屏幕为起点),Y的移动距离是半个屏幕的像素animation4.setDuration(2000);animation4.setRepeatCount(1);animation4.setRepeatMode(Animation.REVERSE); imageView.startAnimation(animation4);
(5)动画组合的效果
AnimationSet set = new AnimationSet(false);RotateAnimation animation5 = new RotateAnimation(0, 180, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);animation5.setDuration(2000);animation5.setRepeatCount(1);animation5.setRepeatMode(Animation.REVERSE); TranslateAnimation animation6 = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.5f, Animation.RELATIVE_TO_PARENT, 0.5f, Animation.RELATIVE_TO_PARENT, 0.5f);animation6.setDuration(2000);animation6.setRepeatCount(1);animation6.setRepeatMode(Animation.REVERSE);set.addAnimation(animation5);set.addAnimation(animation6);imageView.startAnimation(set);
三、XML定义Tween动画
(1)res/anim/translate_animation
<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?><translate xmlns:android="http://schemas.android.com/apk/res/android" android:fromXDelta="20%p" android:toXDelta="80%p" android:fromYDelta="20%p" android:fillAfter="true" android:toYDelta="80%p" android:duration="2000"></translate></span>20%p的意思是相对于父控件的20%,20%就是相对于自身的20%
fillAfter的意思是保持为动画最后的样子
<span style="font-size:18px;">Animation animation1 = AnimationUtils.loadAnimation(this, R.anim.translate_animation);imageView.startAnimation(animations);</span>
(2)res/anim/set_animation
<span style="font-size:18px;"><set> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="2000" android:fillAfter="true" android:fromXDelta="20%p" android:fromYDelta="20%p" android:toXDelta="80%p" android:toYDelta="80%p" > </translate> <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:duration="2000" android:fillAfter="true" android:fromAlpha="1.0" android:toAlpha="0.2" > </alpha></set></span>
<span style="font-size:18px;">Animation animation1 = AnimationUtils.loadAnimation(this, R.anim.set_animation);imageView.setAnimation(animation1);</span>
- 动画的简单介绍
- android 动画简单介绍
- iOS中的动画-简单介绍
- Rebound动画框架简单介绍
- CSS3动画属性简单介绍
- UIKit基础:14-序列帧动画的简单介绍
- 介绍简单实用APP动画效果的两个关键
- 介绍简单实用APP动画效果的两个关键
- Tween Animation——补间动画的简单介绍
- Android 补间动画的简单介绍及使用
- iOS动画简单使用及介绍
- 编写简单的动画
- 窗口的简单动画
- 简单的弹跳动画
- 制作简单的动画
- 简单的动画
- 简单的Tween动画
- imageView简单的动画
- MapReduce 2.0 in Apache Hadoop 0.23
- 8,Objective-C语法之NSArray和NSMutableArray
- ORA-00257 archiver error. 错误的处理方法
- 9,Objective-C语法之NSDictionary和NSMutableDictionary
- 给计算机专业大学生整理的书单
- 动画的简单介绍
- Tomcat内存溢出的三种情况及解决办法分析
- 10,Objective-C语法之NSSet和NSMutableSet
- 【转】用 grep 恢复误删的文本文件
- 11, Objective-C语法property详解
- USACO Chapter1-Getting started Section 1.3
- 12,Objective-C语法之KVC的使用
- GoAgent设置RC4加密
- 写文件换行