Как переходить с одного экрана на другой с помощью анимации

Я только что посмотрел на приложение Twitter, и у него, кажется, есть приятный скользящий переход при переходе от одного экрана к другому. Я пытаюсь получить такое же поведение в своем приложении.

В настоящее время я перемещаюсь между экранами с помощью:

startActivityForResult(new Intent(getApplicationContext(), MyActivity.class), 1);

Но таким образом нет перехода между экранами. MyActivity просто появляется на экране.


person Anthony    schedule 10.05.2014    source источник
comment
возможный дубликат stackoverflow.com/questions /12092894/   -  person Cool    schedule 10.05.2014


Ответы (2)


Анимации с помощью рисунков:

Это руководство может помочь вам понять, как работает. Во-первых, вы должны создать папку с именем anim в папке /res/. Затем создайте и поместите в него drawables, который будет использоваться для создания анимации перехода следующим образом:

anim_left_to_right.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate 
        android:fromXDelta="-100%"
        android:toXDelta="0%"
        android:duration="@android:integer/config_mediumAnimTime" />
</set>  

anim_right_to_left.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%"
        android:duration="@android:integer/config_mediumAnimTime" />
</set>  

Затем используйте метод overridePendingTransition() для вызовите чертежи и примените их к методу startActivity() (или startActivityForResult()):

startActivityForResult(new Intent(getApplicationContext(), MyActivity.class), 1);
overridePendingTransition(anim_left_to_right, anim_right_to_left);

Пользовательские анимации в зависимости от жизненного цикла:

Вы также можете создавать собственные анимации «независимо от метода startActivity», но с использованием жизненного цикла действий: я имею в виду, например, Vine, когда вы вызываете анимацию входа в onCreate() и анимацию вывода в onPause(). Это отличное демо об этой функции.

person fllo    schedule 10.05.2014
comment
Это прекрасно работает. Как насчет того, когда я вернусь со второго занятия обратно к первому. Я делаю это с помощью: setResult(RESULT_OK, mainIntent); финиш(); - person Anthony; 10.05.2014
comment
@Anthony сделайте то же самое или используйте метод onResume в первом действии, чтобы создать пользовательскую анимацию, и onPause для предыдущего, как в примере с Vine, когда вы вернетесь. - person fllo; 10.05.2014

Вызовите overridePendingTransition(entry_anim, exit_anim) после вызова startActivity().

Вы можете указать анимацию входа и выхода через xml.

person Swayam    schedule 10.05.2014
comment
Это прекрасно работает. Как насчет того, когда я вернусь со второго занятия обратно к первому. Я делаю это с: setResult(RESULT_OK, mainIntent); finish(); - person Anthony; 10.05.2014
comment
Вызовите тот же фрагмент после вызова finish. - person Swayam; 10.05.2014