Android 平滑和立体翻页效果1

偶尔善良 提交于 2019-11-29 01:30:36

Android 平台提供了一套完整的动画框架,使得开发者可以用它来开发各种动画效果,本文将向读者阐述 Android 的动画框架是如何实现的。任何一个框架都有其优势和局限性,只有明白了其实现原理,开发者才能知道哪些功能可以利用框架来实现,哪些功能须用其他途径实现。Android 平台提供了两类动画,一类是 Tween 动画,即通过对场景里的对象不断做图像变换 ( 平移、缩放、旋转 ) 产生动画效果;第二类是 Frame 动画,即顺序播放事先做好的图像,跟电影类似。本文是由两部分组成的有关 Android 动画框架详解的第一部分原理篇, 主要分析 Tween 动画的实现原理, 最后简单介绍在 Android 中如何通过播放 Gif 文件来实现动画。我们先看一下动画示例来一点感性认识。

Android 动画使用示例

使用动画示例程序的效果是点击按钮,TextView 旋转一周。读者也可以参看 Apidemos 中包 com.example.android.apis.animationview 下面的 Transition3d 和 com.example.android.apis.view 下面的 Animation1/Animation2/Animation3 示例代码。

清单 1. 代码直接使用动画

package com.ray.animation;   import android.app.Activity;   import android.os.Bundle;   import android.view.View;   import android.view.View.OnClickListener;   import android.view.animation.AccelerateDecelerateInterpolator;   import android.view.animation.Animation;   import android.view.animation.RotateAnimation;   import android.widget.Button;   public class TestAnimation extends Activity implements OnClickListener{       public void onCreate(Bundle savedInstanceState){       super.onCreate(savedInstanceState);       setContentView(R.layout.main);       Button btn =(Button)findViewById(R.id.Button);       btn.setOnClickListener(this);   }      public void onClick(View v){      Animation anim=null;      anim=new?RotateAnimation(0.0f,+360.0f);      anim.setInterpolator(new AccelerateDecelerateInterpolator());      anim.setDuration(3000);      findViewById(R.id.TextView01).startAnimation(anim);   }   }

使用 XML 文件方式,在打开 Eclipse 中新建的 Android 工程的 res 目录中新建 anim 文件夹,然后在 anim 目录中新建一个 myanim.xml( 注意文件名小写 ),内容如下 :


图 1. 使用 xml 文件方式


其中的 java 代码如下:

package com.ray.animation;   import android.app.Activity;   import android.os.Bundle;   import android.view.View;   import android.view.View.OnClickListener;   import android.view.animation.Animation;   import android.view.animation.AnimationUtils;   import android.widget.Button;   import android.widget.TextView;   public class TestAnimation extends Activity implements OnClickListener{   public void onCreate(Bundle savedInstanceState){   super.onCreate(savedInstanceState);   setContentView(R.layout.main);   Button btn =(Button)findViewById(R.id.Button01);   btn.setOnClickListener(this);   }    @Override   public void onClick(View v){   Animation anim=AnimationUtils.loadAnimation(this,R.anim.my_rotate_action);   findViewById(R.id.TextView01).startAnimation(anim);   }   }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!