Плавный переход к следующей Activity

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...

При стандартном вызове нового окна (Activity) происходит дерганье экрана, а потом появляется новое окно, и это не зависит от количества выпитого чая или кофе.

А что если этот переход будет плавным, каким то анимированным?

Обычный вызов Activity

Использую среду разработки Android Studio v3.2.1, со стандартными формами, классы которых идут от AppCompatActivity

И так, обычно вызов новой Activity делаем так:


Intent intent = new Intent(MainActivity.this, Main2Activity.class);
startActivity(intent);

где, MainActivity — текущий класс, текущей формы

Main2Activity — класс новой вызываемой формы (конечно он должен быть предварительно создан)

Вызов новой формы (Activity) с анимацией

А теперь добавим сюда анимацию, для плавного перехода между окнами

Для этого создадим дополнительные ресурсы

/res/anim/slidein.xml

/res/anim/slideout.xml

Содержание slidein.xml


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

Содержание slideout.xml


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

И теперь немного изменим вызов Activity


Intent intent = new Intent(MainActivity.this, Main2Activity.class);
startActivity(intent);
overridePendingTransition(R.anim.slidein, R.anim.slideout);

После старта Activity была добавлена функция overridePendingTransition, на входе которой те два ресурса, начало анимации и конец.

Примечание.

Обратный переход будет идти без анимации, то есть для того чтоб была анимация при возвращении на основную Activity, надо в том обработчике возврата тоже вызвать функцию overridePendingTransition

Возврат с анимацией на основную Activity

Для этого можно использовать такой пример


public void onClickBack(View view){
onBackPressed();
overridePendingTransition(R.anim.slidein, R.anim.slideout);
}

Данный метод можно повесить на кнопку, и будет произведен возврат с анимацией

Функция onBackPressed() — стандартная, как раз и осуществляет обратный переход

1 комментарий

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *