Я нашел другой, хотя и простой подход, который, кажется, работает достаточно хорошо. Анимации для действий также могут быть выполнены с использованием overridePendingTransition, поэтому, когда действие завершается, вы просто будете использовать этот метод.
Было бы наиболее эффективно реализовать эти переопределения в BaseActivity, который расширяется всеми действиями в вашем проекте. Теперь все ваши действия будут автоматически включать анимацию выхода и анимацию при запуске новых видов деятельности:
public abstract class BaseActivity extends AppCompatActivity {
@Override
public void finish() {
super.finish();
onLeaveThisActivity();
}
protected void onLeaveThisActivity() {
overridePendingTransition(R.anim.enter_from_left, R.anim.exit_to_right);
}
// It's cleaner to animate the start of new activities the same way.
// Override startActivity(), and call *overridePendingTransition*
// right after the super, so every single activity transaction will be animated:
@Override
public void startActivity(Intent intent) {
super.startActivity(intent);
onStartNewActivity();
}
@Override
public void startActivity(Intent intent, Bundle options) {
super.startActivity(intent, options);
onStartNewActivity();
}
protected void onStartNewActivity() {
overridePendingTransition(R.anim.enter_from_right, R.anim.exit_to_left);
}
}
Чтобы закруглить вещи, я буду включать 4 Anim ресурсы:
enter_from_right
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="100%p"
android:toXDelta="0%p"/>
exit_to_left
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="0%p"
android:toXDelta="-100%p"/>
enter_from_left
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="-100%p"
android:toXDelta="0%p"/>
exit_to_right
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="0%p"
android:toXDelta="100%p"/>
пс. Вы, вероятно, хотели бы исключить экзит-анимацию в стартовой/основной деятельности ;-)
public class MainMenuActivity extends BaseActivity {
....
@Override
protected void onLeaveThisActivity() {
// Don't use an exit animation when leaving the main activity!
}
}
Я использовал этот код: 'overridePendingTransition (android.R.anim.fade_in, android.R.anim.fade_out) ; Вы можете увидеть эти примеры в [GmailAnimation] (https://github.com/CabezasGonzalezJavier/GmailAnimation) или [LopeAnimations] (https://github.com/CabezasGonzalezJavier/LopeAnimations). Также вы можете увидеть больше в этом [блоге] (http://thedeveloperworldisyours.com/android/gmail-overriding-pending-transition/#sthash.CEhJwJLg.dpbs). – Cabezas
Я ответил на вопрос своего вопроса с тем же примером, но немного расширил его ;-) –