Android开发经验笔记程序猿葵花宝典android开发

Activity和Fragment的转场动画

2015-03-17  本文已影响4003人  陈利健

Activity设置转场动画需要在startActivity和finish之后,意为给开启新视图或关闭旧视图添加转场动画。

这是Acitivity通过overridePending方法,设置进和出:

//新acitivity从以后边向左边滑入页面
startActitivity(MainAcitity.this, NewActivity.class);
overridePendingTransition(R.anim.push_left_in_no_alph,
            R.anim.push_left_out_no_alpha);

//需要销毁的Activity向右边屏幕边缘滑出页面
finish();
overridePendingTransition(R.anim.push_right_in_no_alpha,
                R.anim.push_right_out_no_alpha);

//让返回键也执行动画
public void onBackPressed() {
    // TODO Auto-generated method stub
    super.onBackPressed();
    overridePendingTransition(R.anim.push_right_in_no_alpha,
            R.anim.push_right_out_no_alpha);
}

Fragment的设置需要在transaction.add 或transaction.remove之前。
Fragment有两种方式,一种android提供了默认方法,一种自定义动画

//淡入淡出的默认动画
transaction = getSupportFragmentManager().beginTransaction();
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);

//设置自定义过场动画
transaction.setCustomAnimations(            
            R.anim.push_left_in,
            R.anim.push_left_out,
            R.anim.push_left_in,
            R.anim.push_left_out);

动画文件放置位置: res/anim: 这是兼容API-11以下的,只能有四种补间动画方式

//push_left_in_no_alpha,acitivity转场的时候用alpha会不好看
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="200"
        android:fromXDelta="100%p"
        android:toXDelta="0" />
</set>

//push_left_out_no_alpha
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="200"
        android:fromXDelta="0"
        android:toXDelta="-100%p" />
</set>

//push_right_in_no_alpha
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="200"
        android:fromXDelta="-100%p"
        android:toXDelta="0" />
</set>

//push_right_out_no_alpha
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="200"
        android:fromXDelta="0"
        android:toXDelta="100%p" />
</set>

用set标签的意思是可以集合多个动画一起执行,也可以自行选择单个动画,如alpha等。

上一篇 下一篇

猜你喜欢

热点阅读