實現從主頁跳轉到搜索頁,再從搜索頁回退主頁
withTransition(int resId,int resId)
這個方法兩個參數
第一個的意思是, A 到 B, B 的入場動畫
第二個的意思是,A 到 B, A 的出場動畫
即,入場動畫,出場動畫,至於哪個是哪個,該哪個是哪個就哪個是哪個 :)
比如我這裏,主頁到搜索頁,希望搜索頁像放簾子一樣下來,主頁不動,所以在主頁跳轉時,只傳入搜索頁的入場動畫即可。
MainActivity
ARouter.getInstance()
.build(MyRouter.ACTIVITY_SEARCH)
.withTransition(R.anim.slide_in_from_top,0)
.navigation(this);
當從搜索頁回退到主頁時,搜索頁像捲簾子一樣上去,主頁依然不動,所以在搜索頁跳轉時,只傳入搜索頁出場動畫即可。
當然,如果非要 finish 掉搜索頁,可以寫到 Callback 裏面
SearchActivity
ARouter.getInstance()
.build(MyRouter.ACTIVITY_MAIN)
.withTransition(0, R.anim.slide_out_from_top)
.navigation(this, new NavigationCallback() {
@Override
public void onFound(Postcard postcard) {
}
@Override
public void onLost(Postcard postcard) {
}
@Override
public void onArrival(Postcard postcard) {
finish();
}
@Override
public void onInterrupt(Postcard postcard) {
}
});
以上要注意的一點是,單純的使用ARouter可以navigation()不傳當前Activity,如果要用上動畫,必須傳當前Activity,即:navigation(this),否則不生效!最好的習慣就是每次都傳!(這一點,研究了我小半年, 一直沒注意這點!!!)
下面是兩個動畫源碼,兩個文件都在res/anim目錄下,沒有的需要自己手動建立
slide_in_from_top.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<translate
android:fromYDelta="-100%p"
android:toYDelta="0%p"
android:duration="500"/>
</set>
slide_out_from_top.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<translate
android:fromYDelta="0%p"
android:toYDelta="-100%p"
android:duration="500"/>
</set>
另外還有常用的兩個淡入淡出效果
fade_in.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="300" />
fade_out.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="1.0" android:toAlpha="0.0"
android:duration="300" />