Android: как сделать вертикальный переход Activity с другим Activity

У меня есть ListView в моем первом действии. И когда я нажимаю на элемент внутри, я запускаю другое действие. Хорошо для этого. Но теперь я хочу изменить переход между этими двумя действиями:

  1. Activity1 -> Activity2: вертикальный переход для Activity2 снизу вверх (последовательность)
  2. Когда я возвращаюсь к Activity1: вертикальный переход для Activity2 сверху вниз (прогресс)

ОБНОВЛЕНИЕ

Я нашел решение в соответствии с моими требованиями:

Активность1 -> Активность2

startActivity();
overridePendingTransition(R.anim.from_bottom_to_top, 0);

from_botton_to_top.xml

<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:fromYDelta="100%p" android:toYDelta="0%p"
android:duration="@android:integer/config_shortAnimTime"/>

Activity2 -> Activity1 (нажатая клавиша)

finish();
overridePendingTransition(0, R.anim.from_top_to_bottom);

from_top_to_bottom.xml

<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromYDelta="0%p" android:toYDelta="100%p"
android:duration="@android:integer/config_shortAnimTime"/>

person anthony    schedule 01.07.2015    source источник


Ответы (2)


Используйте overridePendingTransition, чтобы изменить анимацию действия.

Для 1-го случая вы можете использовать:

Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);                     
overridePendingTransition(R.anim.abc_slide_in_bottom, R.anim.abc_slide_out_top);

Во втором случае выберите другие анимации и вызовите overridePendingTransition в onBackPressed или после finish. overridePendingTransition следует вызывать сразу после завершения вашей активности.

Если вы ищете анимацию, взгляните на примеры Google API. https://android.googlesource.com/platform/development/+/master/samples/ApiDemos/res/anim/ Там много простых и полезных анимационных XML-файлов.

Но abc_slide_in_bottom и abc_slide_in_bottom уже несколько лет находятся в google appcompat lib. abc_slide_out_bottom и abc_slide_in_top тоже.

person daemmie    schedule 01.07.2015
comment
Привет! Спасибо за вашу помощь. Итак, для перехода от ActivityA к ActivityB все в порядке (overridePendingTransition(R.anim.abc_slide_in_bottom, 0); Но от ActivityB к ActivityA он не работает должным образом: overridePendingTransition(0, R.anim.from_top_to_bottom): ‹translate xmlns:android =schemas.android.com/apk/res/android android:interpolator=@android :anim/accelerate_interpolator android:fromYDelta=0 android:toYDelta=-100%p android:duration=@android:integer/config_mediumAnimTime/› - person anthony; 02.07.2015

Вам нужно будет использовать anim. Сначала создайте два файла xml и поместите их в res/anim

from_bottom_to_top.xml

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

from_top_to_bottom.xml

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

Затем, когда вы начинаете свою деятельность (используя startActivity), после этого сразу же вызывайте overridePendingTransition(int enterAnim, int exitAnim).

Вы можете добиться того же при завершении ActivityB (завершение вызова и сразу после overridePendingTransation).

Вы можете играть с анимациями и создавать свои/настраивать их.

person Mathbl    schedule 01.07.2015