2015-07-01 1 views
1

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

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

UPDATE

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

Activity1 -> деятельности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"/> 

деятельности2 -> Activity1 (backpressed ключ)

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"/> 

ответ

1

Используйте 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); 

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

Если вы ищете анимацию, взгляните на образцы API Google. 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 также.

+0

Привет! Спасибо за вашу помощь. Таким образом, для перехода от ActivityA к ActivityB это нормально (overridePendingTransition (R.anim.abc_slide_in_bottom, 0), но от ActivityB до ActivityA это не работает должным образом: overridePendingTransition (0, R.anim.from_top_to_bottom): <переводить xmlns: android = "http://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" /> – anthony

0

Вам нужно будет использовать 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), после чего сразу же позвонить over overridePendingTransition (int enterAnim, int exitAnim).

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^