Анимационный переход между действиями с использованием FLAG_ACTIVITY_CLEAR_TOP
В моем приложении Android я создаю метод, который выдает все действия и выдает первую активность.
Я использую этот код:
Intent intent = new Intent(this, MMConnection.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
this.startActivity(intent);
Как я заметил, что переход был все еще анимацией слева направо, кто-то знает, есть ли способ изменить системную анимацию при запуске?
На самом деле, я бы идеально хотел, чтобы переход справа налево (например, при нажатии кнопки возврата)
спасибо за помощь!
Ответы
Ответ 1
CoolMcGrr прав, вы хотите использовать overridePendingTransition(int enterAnim, int exitAnim)
.
Чтобы получить стандартный переход "назад", я использую их как переходы enterAnim
и exitAnim
:
push_right_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="@android:integer/config_shortAnimTime"/>
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="@android:integer/config_shortAnimTime" />
</set>
push_right_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromXDelta="0" android:toXDelta="100%p" android:duration="@android:integer/config_shortAnimTime"/>
<alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="@android:integer/config_shortAnimTime" />
</set>
Ответ 2
Вы должны посмотреть Activity.overridePendingTransition().
Конечно, для этого требуется, чтобы вы запускали хотя бы версию 2.0 SDK.
Ответ 3
Я использовал этот код:
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
Вы можете увидеть эти примеры в GmailAnimation или LopeAnimations. Также вы можете увидеть больше в этом Блог.
Ответ 4
Проблема возникает в наши дни, поскольку pre-ICS и ICS имеют разные встроенные переходы активности.
Это намного чище, чем определение вашей собственной анимации и независимого SDK:
Intent intent = new Intent(this, MMConnection.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NO_ANIMATION);
this.startActivity(intent);
finish();
Это запустит активность (пока еще не видно) и воспроизвести переход "активность" к новому действию.