android中的动画之变化动画事例1

前面我已经说了变换动画,并且变换动画中分为4种情况:透明度动画、旋转动画、缩放动画、位移动画。

今天我来说说关于使用变换动画中的4种类型来实现它们的糅合。

我在这里主要使用了一个Animation对象中的一个监听方法--setAnimationListener。这个方法里面只有一个参数,安卓api给出的这个方法的完整形态--

void android.view.animation.Animation.setAnimationListener(AnimationListener listener)。从中我们可以知道,这个参数需要传递一个AnimationListener 类型的参数,我们只需要使用匿名内部类来即可(这里我的要求简单,所以使用的是匿名内部类)。

当我们使用了匿名内部类后,会出现三个方法。代码如下

JAVA代码

 1         animation1.setAnimationListener(new AnimationListener() {
 2             //当动画开始时调用
 3             public void onAnimationStart(Animation animation) {
 4                 // TODO Auto-generated method stub
 5
 6             }
 7             //当动画重复时调用
 8             public void onAnimationRepeat(Animation animation) {
 9                 // TODO Auto-generated method stub
10
11             }
12             //当动画开始时调用
13             public void onAnimationEnd(Animation animation) {
14                 // TODO Auto-generated method stub
15                 imageview.startAnimation(animation2);
16             }
17         });

其中方法animation1和animation2都是Animation对象。

看到这里我们应该怎么实现了吧,话不多说,直接贴完整的代码

anim文件下的xml代码

1.alpha.xml代码(animation1加载的)

1 <?xml version="1.0" encoding="utf-8"?>
2 <set xmlns:android="http://schemas.android.com/apk/res/android">
3     <alpha
4         android:duration="1000"
5         android:fromAlpha="0.1"
6         android:toAlpha="1.0"
7         />
8 </set>

2.translate.xml代码

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <set xmlns:android="http://schemas.android.com/apk/res/android" >
 3
 4     <translate
 5         android:duration="1000"
 6         android:fromXDelta="10"
 7         android:fromYDelta="10"
 8         android:toXDelta="100"
 9         android:toYDelta="100" />
10
11 </set>

布局文件代码

xml代码

 1  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     tools:context="com.example.Tween_Animation.Alpha_MainActivity" >
 7
 8     <Button
 9         android:id="@+id/button_scale"
10         android:layout_width="fill_parent"
11         android:layout_height="wrap_content"
12         android:text="@string/button_stringScaleAnimation" />
13
14     <LinearLayout
15         android:gravity="center"
16         android:layout_width="fill_parent"
17         android:layout_height="fill_parent"
18         android:orientation="vertical" >
19
20         <ImageView
21             android:id="@+id/imageview_scale"
22             android:layout_width="wrap_content"
23             android:layout_height="wrap_content"
24             android:src="@drawable/ic_launcher" />
25     </LinearLayout>
26
27 </LinearLayout>

activity代码

JAVA代码

 1 package com.example.Demo1;
 2
 3
 4
 5 import com.example.androidanimation.R;
 6
 7 import android.app.Activity;
 8 import android.os.Bundle;
 9 import android.view.View;
10 import android.view.View.OnClickListener;
11 import android.view.animation.Animation;
12 import android.view.animation.Animation.AnimationListener;
13 import android.view.animation.AnimationUtils;
14 import android.widget.Button;
15 import android.widget.ImageView;
16 /*
17  * 组合动画
18  * 先播放一个动画然后再播放一个动画
19  */
20 public class MainActivity extends Activity implements OnClickListener{
21     private Button button = null;
22     private ImageView imageview = null;
23
24     protected void onCreate(Bundle savedInstanceState) {
25         super.onCreate(savedInstanceState);
26         setContentView(R.layout.activity_main);
27         button = (Button) findViewById(R.id.button_scale);
28         imageview = (ImageView) findViewById(R.id.imageview_scale);
29         button.setText("组合动画1");
30         button.setOnClickListener(this);
31     }
32     public void onClick(View v) {
33         Animation animation1 = AnimationUtils.loadAnimation(this, R.anim.alpha);
34         imageview.startAnimation(animation1);
35         final Animation animation2 = AnimationUtils.loadAnimation(this, R.anim.translate);
36         animation1.setAnimationListener(new AnimationListener() {
37             //当动画开始时调用
38             public void onAnimationStart(Animation animation) {
39                 // TODO Auto-generated method stub
40
41             }
42             //当动画重复时调用
43             public void onAnimationRepeat(Animation animation) {
44                 // TODO Auto-generated method stub
45
46             }
47             //当动画开始时调用
48             public void onAnimationEnd(Animation animation) {
49                 // TODO Auto-generated method stub
50                 imageview.startAnimation(animation2);
51             }
52         });
53     }
54 }

这里只是实现了两种类型的动画来完成效果,其实我们可以多种多样,看自己的需要了。

时间: 2024-11-08 07:24:26

android中的动画之变化动画事例1的相关文章

android中给Dialog设置的动画如何自定义修改参数

============问题描述============ 在android中给Dialog设置动画的方法我只找到Dialog.getWindow().setWindowAnimation(int resID); 这样不是只能在styles里用xml定义动画吗? 但是我现在想要先用程序计算出一个屏幕上的点,在让Dialog从该点开始执行scaleAnimation. 我如何给我Dialog的动画设置起始点之类的参数呢? ============解决方案1============ 自定义一个dial

android中的动画之变化动画事例2

之前,我已经说了下,关于变换动画的糅合.在这里,我将说的是,写一个动画集AnimationSet(我们知道,在JAVA中有set容器,而set容器的特点就是:1.无序2.不含重复元素.相当于是数学中的集合)用来存放多个Animation对象,这是JAVA代码的方法,还有一个方法就是在anim下的xml代码写一个集合,用来存放多个动画,我在这里用的是第二种方法 anim文件下的xml代码 xml代码 1 <?xml version="1.0" encoding="UTF-

android中的动画之变化动画事例4

今天我在这里说下Activity切换动画.Activity切换动画指的是Activity跳转的动画,分别分为:一个activity退出的动画,另一个activity进入的动画. 在android2.0之后,就有了一个方法来给我们实现这种效果--overridePendingTransition(int,int).从这个方法中,我们可以看出overridePendingTransition方法需要我们传递2个参数,第一个参数是第二个Activity进入的动画,第二个参数是第一个Activity退出

android中的动画之变化动画事例3

今天我来说下,关于动画的重复的使用. 首先,我在这里使用的是JAVA代码来实现的,创建了一个AlphaAnimation来设置动画的属性.话不多说,直接贴代码 布局文件代码 xml代码 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layou

Android组件Activity中的View绘画和动画(Animation)是否会重画?

Activity 就是Android中的活动,是Android系统中唯一一个可见组件. Activity中官网中有一句话: The visible lifetime of an activity happens between a call to onStart() until a corresponding call to onStop() 这句话的意思是可以看见Activity的生命周期是从 调用onStart()方法开始 直到调用onStop()方法.这句话开始我就理解错误了.因为设置Ac

Android中的补间动画(tween)的简单使用

相对帧动画,补间动画(tween)可以这么理解:我们不必像帧动画一样指定动画的每一帧,只需定义一个动画的开始和结束关键帧,而中间变化的帧由系统帮我们计算. tween动画可以分为下面几种: AlphaAnimation(透明渐变动画): 示例:res/anim/alpha.xml <?xml version="1.0" encoding="utf-8"?> <alpha xmlns:android="http://schemas.andr

Android中的动画学习总结

android中动画可分为三种:帧动画,补间动画,和属性动画.其中属性动画是google推荐的,它可以实现前面两种动画的效果,运用起来更加灵活. 帧动画:顾名思义,就是一帧一帧的图片,快速播放形成的动画. 具体实现步骤如下: 第一:新建一个drawable资源 以animation-list 为根节点创建资源文件. 第二:给ImageView或者其他View设置关联drawable.可以作为background或者src. 第三:在java代码中,通过View.getBackground():或

Android中的动画具体解释系列【2】——飞舞的蝴蝶

这一篇来使用逐帧动画和补间动画来实现一个小样例,首先我们来看看Android中的补间动画. Android中使用Animation代表抽象的动画类,该类包含以下几个子类: AlphaAnimation:透明改变动画. ScaleAnimation:大小缩放动画. TranslateAnimation:位移变化动画. RotateAnimation:旋转动画. 我们以下使用位移动画和逐帧动画来实现这个小样例.先看看执行效果: 蝴蝶挥动翅膀的逐帧动画文件: <?xml version="1.0

Android中的动画机制

1 逐帧动画 逐帧动画 就是一系列的图片按照一定的顺序展示的过程. 逐帧动画很简单, 只需要在drawable中或者anim中定义一个Animation-list 其中包含多个item,每个item中包含一个图片 和duration eg: <?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk