Переход анимации между действиями с использованием FLAG_ACTIVITY_CLEAR_TOP - PullRequest
33 голосов
/ 17 августа 2010

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

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

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

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

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

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

Ответы [ 4 ]

45 голосов
/ 27 июня 2011

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>
8 голосов
/ 12 октября 2010

Вы должны взглянуть Activity.overridePendingTransition () .

Конечно, для этого необходимо запустить как минимум версию 2.0 SDK.

6 голосов
/ 04 сентября 2014

Я использовал этот код:

overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);

Вы можете увидеть эти примеры в GmailAnimation или LopeAnimations .Также вы можете увидеть больше в этом блоге .

6 голосов
/ 22 октября 2012

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

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

...