Android 之Activity切换动画效果

  在Activity中Android提供了overridePendingTransition(int enterAnim,int exitAnim)这个方法用于设置Activity之间切换的动画效果。overridePendingTransition方法要放到startActivity()或finish()(如果存在finish则要放到finish后面)后面。

enterAnim 定义Activity进入屏幕时的动画

exitAnim 定义Activity退出屏幕时的动画

系统中也提供了几种动画效果例如:

android.R.anim.slide_in_left  从左边滑入

android.R.anim.slide_out_right  从右边滑出

android.R.anim.fade_in  淡入

android.R.anim.fade_out  淡出

在这里我们可以自定义动画效果:

首先在res文件夹下面新建一个anim文件

(1)in_from_left.xml  从左边滑入

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    
    <translate 
        android:fromXDelta="-100%"
        android:toXDelta="0%"
        android:duration="500"/>
    
</set>

(2)in_from_right.xml  从右边滑入

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    
    <translate 
        android:fromXDelta="100%p"
        android:toXDelta="0%p"
        android:duration="500"/>

</set>

(3)out_to_left.xml  从左边滑出

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    
    <translate 
        android:fromXDelta="0%p"
        android:toXDelta="-100%p"
        android:duration="500"/>
</set>

(4)out_to_right.xml  从右边滑出

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    
    <translate 
        android:fromXDelta="0%p"
        android:toXDelta="100%p"
        android:duration="500"/>
    
</set>

使用方法:

从右边进入,左边离开

private OnClickListener btnListener = new OnClickListener(){
        public void onClick(View view){
            Intent intent = new Intent(MainActivity.this,OtherActivity.class);
            startActivity(intent);
            overridePendingTransition(R.anim.in_from_right,R.anim.out_to_left);
        }
    };

从左边进入,右边离开

private OnClickListener btnListener = new OnClickListener(){
        public void onClick(View view){
            Intent intent = new Intent(OtherActivity.this,MainActivity.class);
            startActivity(intent);
            finish();
            overridePendingTransition(R.anim.in_from_left,R.anim.out_to_right);
        }
    };

 

 

 

posted @ 2013-12-18 19:34  yshy  阅读(635)  评论(0编辑  收藏  举报