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等。
网友评论