Активация перехода на 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.