При стандартном вызове нового окна (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() — стандартная, как раз и осуществляет обратный переход
Классно, спасибо!