《转载》两个activity界面间跳转切换动画效果

Activity的切换动画指的是从一个activity跳转到另外一个activity时的动画。

它包括两个部分:
一部分是第一个activity退出时的动画;
另外一部分时第二个activity进入时的动画;
在Android的2.0版本之后,有了一个函数来帮我们实现这个动画。这个函数就是overridePendingTransition

这个函数有两个参数,一个参数是第一个activity进入时的动画,另外一个参数则是第二个activity退出时的动画。

这里需要特别说明的是,关于overridePendingTransition这个函数,有两点需要主意
1.它必需紧挨着startActivity()或者finish()函数之后调用"
2.它只在android2.0以及以上版本上适用  

2 官方给我们提供的动画效果

实现淡入淡出的效果

 

overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out);    

由左向右滑入的效果

overridePendingTransition(android.R.anim.slide_in_left,android.R.anim.slide_out_right);

3overridePendingTransition 不起作用原因

 1、android系统版本2.0以下,这个没办法,想其他办法解决切换动画吧。

 2、在ActivityGroup等的嵌入式Activity中,这个比较容易解决,用如下方法就可以了:
    this.getParent().overridePendingTransition 就可以解决。

 3、在一个Activity的内部类中,或者匿名类中,这时候只好用handler来解决了。

 4、手机的显示动画效果被人为或者其他方式给关闭了 现在打开即可 设置->显示->显示动画效果

4 自定义动画

步骤一:首先在res/anim 下  声明两个动画效果   

fade.xml
 <?xml version="1.0" encoding="utf-8"?>  
    <alpha xmlns:android="http://schemas.android.com/apk/res/android"  
           android:interpolator="@android:anim/accelerate_interpolator"  
           android:fromAlpha="0.0" android:toAlpha="1.0"  
           android:duration="@android:integer/config_longAnimTime" />  

 

hold.xml
<?xml version="1.0" encoding="utf-8"?>  
<translate xmlns:android="http://schemas.android.com/apk/res/android"  
       android:interpolator="@android:anim/accelerate_interpolator"  
       android:fromXDelta="0" android:toXDelta="0"  
       android:duration="@android:integer/config_longAnimTime" /> 

 

步骤二:在activity跳转的时候加上overridePendingTransition方法
  refresh=(TextView) this.findViewById(R.id.refresh);  
           refresh.setOnClickListener(new OnClickListener() {  
            @Override  
            public void onClick(View v) {  
                // TODO Auto-generated method stub  
                Intent intent=new Intent(PathButtonActivity.this,MainActivity.class);  
                startActivity(intent);  
                //第一个参数为启动时动画效果,第二个参数为退出时动画效果  
                overridePendingTransition(R.anim.fade, R.anim.hold);  
            }  
        });  
posted @ 2015-07-23 16:22  烟风  阅读(4211)  评论(0编辑  收藏  举报