Activity設(shè)置轉(zhuǎn)場動畫需要在startActivity和finish之后,意為給開啟新視圖或關(guān)閉舊視圖添加轉(zhuǎn)場動畫属桦。
這是Acitivity通過overridePending方法房蝉,設(shè)置進和出:
//新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);
//讓返回鍵也執(zhí)行動畫
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的設(shè)置需要在transaction.add 或transaction.remove之前蛇受。
Fragment有兩種方式年堆,一種android提供了默認方法,一種自定義動畫
//淡入淡出的默認動畫
transaction = getSupportFragmentManager().beginTransaction();
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
//設(shè)置自定義過場動畫
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轉(zhuǎn)場的時候用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標簽的意思是可以集合多個動畫一起執(zhí)行沙庐,也可以自行選擇單個動畫鲤妥,如alpha等。