Переход активности в Android - PullRequest
       55

Переход активности в Android

182 голосов
/ 02 августа 2010

Как определить переход между двумя действиями для Android 1.5 и более поздних версий? Я хотел бы, чтобы активность исчезла.

Ответы [ 14 ]

1 голос
/ 06 сентября 2017

Перед началом вашего намерения:

ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(AlbumListActivity.this);
startActivity(intent, options.toBundle());

Это дает анимацию по умолчанию для вашего перехода деятельности.

1 голос
/ 25 ноября 2015

Использование ActivityCompat.startActivity () работает API> 21.

    ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, transitionImage, EXTRA_IMAGE);
    ActivityCompat.startActivity(activity, intent, options.toBundle());
0 голосов
/ 30 мая 2018

анимация уменьшения масштаба

Intent i = new Intent(getApplicationContext(), LoginActivity.class);
 overridePendingTransition(R.anim.zoom_enter, R.anim.zoom_exit);
startActivity(i);
finish();

zoom_enter

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:fromAlpha="0.0" android:toAlpha="1.0"
    android:duration="500" />

zoom_exit

<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:fromAlpha="1.0" android:toAlpha="0.0"
    android:fillAfter="true"
    android:duration="500" />
0 голосов
/ 20 мая 2018

Некоторые версии Android поддерживают пользовательские переходы Activity, а некоторые нет (более старые устройства). Если вы хотите использовать пользовательские переходы, рекомендуется проверить, есть ли у Activity метод overridePendingTransition(), в отличие от более старых версий.

Чтобы узнать, существует ли метод или нет, можно использовать API отражения. Вот простой код, который проверит и вернет метод, если он существует:

Method mOverridePendingTransition;

try {
        mOverridePendingTransition = Activity.class.getMethod(
                "overridePendingTransition", new Class[] { Integer.TYPE, Integer.TYPE } );
        /* success */
    } catch (NoSuchMethodException nsme) {
        /* failure, this version of Android doesn't have this method */
    } 

И тогда мы можем применить наш собственный переход, то есть использовать этот метод, если он существует:

if (UIConstants.mOverridePendingTransition != null) {
               try {
                   UIConstants.mOverridePendingTransition.invoke(MainActivity.this, R.anim.activity_fade_in, R.anim.activity_fade_out);
               } catch (InvocationTargetException e) {
                   e.printStackTrace();
               } catch (IllegalAccessException e) {
                   e.printStackTrace();
               }
            }

Здесь, в качестве примера, для демонстрации перехода использовались простые анимации постепенного появления и исчезновения.

...