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

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

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

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

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

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

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


person Romain Piel    schedule 17.08.2010    source источник


Ответы (4)


arrow_upward
46
arrow_downward

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>
person E-Riz    schedule 27.06.2011


arrow_upward
7
arrow_downward

Проблема возникает в настоящее время, потому что 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();

Это запустит действие (еще не видимое) и воспроизведет переход «окончание действия» к новому действию.

person dzeikei    schedule 22.10.2012