【Android】关于ARouter转场动画的问题

实现从主页跳转到搜索页,再从搜索页回退主页

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" />

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章