Подтвердить что ты не робот

Анимационный переход между действиями с использованием FLAG_ACTIVITY_CLEAR_TOP

В моем приложении Android я создаю метод, который выдает все действия и выдает первую активность.

Я использую этот код:

Intent intent = new Intent(this, MMConnection.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
this.startActivity(intent);

Как я заметил, что переход был все еще анимацией слева направо, кто-то знает, есть ли способ изменить системную анимацию при запуске?

На самом деле, я бы идеально хотел, чтобы переход справа налево (например, при нажатии кнопки возврата)

спасибо за помощь!

4b9b3361

Ответ 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();

Это запустит активность (пока еще не видно) и воспроизвести переход "активность" к новому действию.