0 Comments

Activity之间切换的动画效果

发布于:2012-11-22  |   作者:广州网站建设  |   已聚集:人围观
Activity之间切换的动画效果

工程目录:src\ch09\ch09_activity_animation     广州网站设计

默认情况下两个Activity之间的切换是直接显示另一个Activity,为了使程序看起来更加有趣,可以在Activity之间切换时加上动画效果。

如果在startActivity或finish后调用Activity.overridePendingTransition方法,并指定显示和关闭Activity的动画效果,就会以动画方式显示和关闭Activity。overridePendingTransition方法的定义如下:

广州网站建设
  1. public void overridePendingTransition(int enterAnim, int exitAnim); 

该方法有两个参数,都是动画资源ID,其中enterAnim表示显示Activity时的动画,exitAnim表示关闭Activity时的动画。这里的动画资源是保存在res\anim目录中的xml动画文件。关于动画文件的内容将在后面详细讲解,在这里只要知道这些动画的原理和Flash类似,都称为补间动画。也就是说,只要定义起始和结束的状态以及动画轨迹,系统就会自动生成动画的中间状态。在本例中我们使用了2个动画文件:fade.xml和hyperspace.xml,分别表示淡入淡出和立体飞出的效果。广州网站设计

下面的代码分别以淡入淡出和立体飞出的效果显示一个Activity。

淡入淡出效果

广州网站建设
  1. Intent intent = new Intent(this, AnimationActivity.class);  
  2. startActivity(intent);          
  3. overridePendingTransition(R.anim.fade, R.anim.fade);  

立体飞出效果


  1. Intent intent = new Intent(this, AnimationActivity.class);  
  2. startActivity(intent);          
  3. overridePendingTransition(R.anim.hyperspace, R.anim.hyperspace);  

如果overridePendingTransition在finish之后调用,系统会以动画方式关闭Activity。下面的代码以淡入淡出效果来关闭Activity。


  1. Intent intent = new Intent(this, AnimationActivity.class);  
  2. finish();  
  3. overridePendingTransition(R.anim.fade, R.anim.fade);  
飞机