说说acitivity 跳转之间的动画
比如通过
startActivity(new Intent(this, TwoActivity.class));
overridePendingTransition(R.anim.activity_right, R.anim.activity_left);
实现的,然后在TwoActivity 界面返回MainActivity界面;
finish();
overridePendingTransition(R.anim.activity_right_back, R.anim.activity_left_back);
我们再来看看这四个动画的定义:
acitivity_left
<set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false">
<!-- //android:duration="@android:integer/config_shortAnimTime" -->
<translate
android:duration="2000"
android:fromXDelta="0%p"
android:interpolator="@android:anim/accelerate_interpolator"
android:toXDelta="-100%p"
/>
</set>
acitivity_right
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="2000"
android:fromXDelta="100%p"
android:interpolator="@android:anim/anticipate_overshoot_interpolator"
android:toXDelta="0%p"
/>
</set>
acitivity_left_back
<set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false">
<translate
android:duration="@android:integer/config_shortAnimTime"
android:fromXDelta="0%p"
android:interpolator="@android:anim/accelerate_interpolator"
android:toXDelta="100%p"
/>
</set>
acitivity_right_back
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_shortAnimTime"
android:fromXDelta="-100%p"
android:interpolator="@android:anim/anticipate_overshoot_interpolator"
android:toXDelta="0%p" />
</set>
这时候,我们再分析一下,overridePendingTransition(int enterAnim, int exitAnim),当我们从A到B的时候,这时候A执行的是exitAnim, 而B执行的是enterAnim ,当从B返回A的时候,就反过来了。所以第一次从MainActivity 到TwoAcitivty, MainAcitivty是从0 到-100 ,而TwoActivy是从100到0,这样明白这个道理后,上进下出也是同样的道理。
以上分析还可以参考
https://blog.csdn.net/wu996489865/article/details/52757544 这篇文章加入了坐标分析;
https://blog.csdn.net/w630886916/article/details/78319502 这是转场动画示例和描述;