overridePendingTransition for sliding activities in and out smoothly

后端 未结 5 677
深忆病人
深忆病人 2020-12-14 02:08

I\'m having trouble figuring out how to slide activities in and out with a push of a button. What I want is for the user to push a button and then the screen slides. The w

相关标签:
5条回答
  • 2020-12-14 02:20

    Change fromXDelta to -100% from enter_from_left and fromXDelta to 100% from enter_from_right in your code, this will give you a correct sliding animation.

    0 讨论(0)
  • 2020-12-14 02:21

    look at my gist, it works perfectly:

    1.Override CommonActivity's startActivity and finish

     @Override
        public void startActivity(Intent intent) {
            super.startActivity(intent);
            overridePendingTransition(R.anim.from_right_in, R.anim.from_left_out);
        }
    
        @Override
        public void finish() {
            super.finish();
            overridePendingTransition(R.anim.from_left_in, R.anim.from_right_out);
        }
    

    2.from_left_in.xml

        <set xmlns:android="http://schemas.android.com/apk/res/android">
        <translate android:fromXDelta="-100%p"
                   android:toXDelta="0"
                   android:duration="300"/>
        <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" />
       </set>
    

    3.from_right_in.xml

       <set xmlns:android="http://schemas.android.com/apk/res/android">
        <translate android:fromXDelta="100%p"
                   android:toXDelta="0"              android:interpolator="@android:interpolator/accelerate_decelerate"
                   android:duration="300"/>
        <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" />
    </set>
    

    4.from_left_out.xml

       <set xmlns:android="http://schemas.android.com/apk/res/android">
        <translate android:fromXDelta="0"
                   android:toXDelta="-100%p"
                   android:duration="300"/>
        <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="300" />
    </set>
    

    5.from_right_out.xml

    <set xmlns:android="http://schemas.android.com/apk/res/android">
        <translate android:fromXDelta="0"
                   android:toXDelta="100%p"
                   android:duration="300"/>
        <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="300" />
    </set>
    

    gist link: https://gist.github.com/JagieChen/f5cc44bf663f3722bd19097be47ccf9b

    0 讨论(0)
  • 2020-12-14 02:22

    Instead of overriding the animation in both startActivity() and the new activities onCreate(), you only need to override the animation just after the startActivity() call.

    The two ints you provide for overridePendingTransition(int enterAnim, int exitAnim) correspond to the two animations - removing the old Activity and adding the new one.

    For your second question, I believe you have the fromXDelta set wrong, -100% should be all the way off the left-hand side of the screen, not the right, so changing this to 100% should fix it.

    0 讨论(0)
  • 2020-12-14 02:34

    There's an error not only in the enter_from_right animation, that should have a fromXDelta of 100% instead of -100%, but even in the enter_from_left animation, that should fave a fromXDelta of -100% instead of 100%.

    Cheers,

    0 讨论(0)
  • 2020-12-14 02:37

    Don't forget the pivot at this point! fE. Move from up to down. pivotY is 100% that meen's bottom, so your 0% are on the bottom and -100% are up and you don't see it. Makes it more handy when you set the pivot to your border.

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android"
            android:fillAfter="true"
            android:shareInterpolator="false">
        <translate
                android:duration="800"
                android:fromYDelta="-100%"
                android:toYDelta="0%"
                android:interpolator="@android:anim/bounce_interpolator"
                android:pivotX="50%"
                android:pivotY="100%"/>
    </set>
    
    0 讨论(0)
提交回复
热议问题