Как иметь разные анимационные переходы для одного и того же действия на Android?

Пожалуйста, обратитесь к этому изображению:

https://lh4.googleusercontent.com/-gEW9RFcjpnQ/UTKSd0DSR5I/AAAAAAAAALs/P7i47evr2uY/s503/transitions.png

1- При запуске приложения через активность отображается заставка

2- Затем выполнение переходит к основному действию (и действие заставки завершается)

3- Пользователь, нажав кнопку, может перейти к действиям экрана-1 или экрана-2.

3.1- При этом основное действие сохраняется (не завершается) и создается желаемое действие на экране.

4- Возврат к действиям на экране-2 или на экране-2 осуществляется простым их завершением. Затем выполнение возвращается к основному действию по умолчанию.

Я хочу:

1- Анимация перехода по умолчанию для (A) на картинке. Это означает анимацию по умолчанию от заставки до основного действия, от основного действия до экрана-1 и после завершения экрана-1 (при возврате к основному действию).

2- Особая анимация перехода для (B) на картинке. Это означает, что при переходе от основного действия к экрану-2 и когда экран-2 закончен (при возвращении к основному действию).

Насколько я искал здесь и в Интернете, я так и не нашел, как этого можно достичь.

Как это можно сделать?

Мне удалось получить разные анимации из Main Activity-> screen-1 и Main Activity-> screen-2, но я совершенно не могу иметь другую анимацию между screen-1-> Main Activity и screen-2-> Main Activity.

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


person shuot    schedule 03.03.2013    source источник


Ответы (1)


Вы используете следующий код, чтобы запустить действие для экрана 2:

startActivityForResult(intent4Screen2, RESULT_ANIMATION);
overridePendingTransition(R.anim.zoom_enter, R.anim.zoom_exit);

В onActivityResult() вы помещаете:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
    case RESULT_ANIMATION:
            overridePendingTransition(R.anim.zoom_enter, R.anim.zoom_exit);
            break;
    }
}

RESULT_ANIMATION — константа, zoom_enter и zoom_exit — ваши анимации, например:

<set xmlns:android="http://schemas.android.com/apk/res/android"
      android:interpolator="@android:anim/decelerate_interpolator">
    <alpha
        android:interpolator="@android:anim/accelerate_interpolator"
        android:fromAlpha="0.0" android:toAlpha="1.0"
        android:duration="@android:integer/config_mediumAnimTime" />
</set>

Если вам нужно поддерживать Android ‹ 2.0, который не поддерживает метод overridePendingTransition(), вам нужно будет использовать отражение.

person Emanuel Moecklin    schedule 03.03.2013