Активация перехода на Android-активность

То, что я пытаюсь достичь, - это начать новую деятельность с анимацией перехода для текущей активности .

Я хотел бы сдвинуть текущую активность, где новая активность будет за текущим.

Вот анимация слайдов: R.layout.slide_up

<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate
        android:duration="1000"
        android:fromYDelta="0%"
        android:toYDelta="100%" />

</set>

Вот как я применяю переход анимации активности:

overridePendingTransition ( 0 , R.anim.slide_up );

Я использую 0 для активности ввода, так как я не хочу анимации для нового действия, и он не работает (анимация не выполняется). Если я также использую анимацию для ввода активности, она работает (обе анимации выполняются), например:

overridePendingTransition ( R.anim.slide_out , R.anim.slide_up );

где R.anim.slide_out:

<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate
        android:duration="1000"
        android:fromYDelta="100%"
        android:toYDelta="0%" />

</set>

Любые идеи?

Я работаю над Android 4.1.2 и Android 4.0.4

Ответ 1

Измените анимацию выхода, чтобы она отображалась поверх ввода.

R.anim.slide_up

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:zAdjustment="top">

    <translate
        android:duration="1000"
        android:fromYDelta="0%"
        android:toYDelta="100%" />

</set>

Затем вы можете сделать то, что вы изначально делали, чтобы настроить анимацию.

overridePendingTransition ( 0 , R.anim.slide_up );

Ответ 2

У меня точно такой же переход, и такая анимация работает для меня:

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromYDelta="0%" android:toYDelta="100%" android:zAdjustment="top"
android:duration="300" />  

Ответ 3

Используйте следующую строку после startActivity

overridePendingTransition(0,0);

Это переопределит анимацию по умолчанию и не сделает анимацию. Вы также можете дать некоторую пользовательскую анимацию, если вам нравится

overridePendingTransition(R.anim.animation1,R.anim.animation2);

Ответ 4

В тех случаях, когда вы вызываете намерение начать действие, вам необходимо изменить намерение. ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(AlbumListActivity.this); startActivity(intent, options.toBundle());

Если у вас есть выделенный метод для setupTransitions(), вы можете разместить там следующие две строки кода: Else вы можете поместить их в onCreate()

getWindow().setEnterTransition(new Slide(Gravity.RIGHT).setDuration(800));

Gravity.RIGHT - это то, что определяет направление, с которого вы хотите начать свою следующую деятельность. setDuration() метод является необязательным, для более плавного перехода я использовал его, вам не нужно.

Исследуйте больше, играя с разными значениями Gravity и setDuration.