Intereting Posts
Как отключить звук щелчка при прослушивании элемента списка Android / Java? Как играть в mp3-файл в необработанной папке в качестве уведомления об уведомлении в андроиде Правильный шаблон для приобретения WakeLock в BroadcastReceiver и его выпуск в службе Ошибка версии для Android Studio SDK после обновления Android: измените цвет рейтинга на золотой ПРОГРАММА ANDROID ELM327 / OBD2 JQuery Mobile / Phonegap на андроиде – весь текст отображается в шапках Приложение Intraweb HTML5, git и база данных – они сочетаются? Android: EditText в ListView Почему Android запускает синхронизацию учетной записи Google каждый раз, когда я добавляю / удалю учетную запись пользовательского типа? Андроидный эмулятор в плагине ADT не работает Исключение NullPointerException при использовании LocalBroadcastManager Импорт org.apache.commons в приложения для Android По умолчанию bindPreferenceSummaryToValue сбой для нестроковых типов Как скрыть Soft Keyboard при запуске активности

Keep Action Bar Стабильный во время анимации перехода на активность

Я использую панель действий в своем приложении для Android, и я использую скользящую анимацию во время перехода активности, вызывая:

startActivityForResult(i, ALL_OK); overridePendingTransition(R.anim.slide_in, R.anim.slide_out); 

Где в моих xml-файлах есть следующий код:

 <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="400"/> </set> 

а также

 <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="400"/> </set> 

Анимация выполнена успешно, но слайд также включает панель действий.

Есть ли способ, чтобы панель действий оставалась стабильной во время перехода к действию?

Solutions Collecting From Web of "Keep Action Bar Стабильный во время анимации перехода на активность"

Есть ли способ, чтобы панель действий оставалась стабильной во время перехода к действию?

Нет извините. Если вы переключаетесь между действиями, изменяется весь пользовательский интерфейс, панель действий и все.

Если требуется желаемое поведение пользовательского интерфейса, перепишите приложение, чтобы иметь одну активность и несколько фрагментов, и используйте анимации для перехода между фрагментами.

Это можно сделать в Android Lollipop с помощью анимации перехода на активность , используя тот же макет для панели действий во всех действиях и определяя панель действий как Shared Element следующим образом:

Во-первых, обязательно включите переходы активности в v21 / styles.xml и используйте тему NoActionBar, чтобы вы могли создать настраиваемую панель действий:

 <style name="AppTheme.NoActionBar"> ... <!-- enable window content transitions --> <item name="android:windowActivityTransitions">true</item> <!-- specify enter and exit transitions --> <item name="android:windowEnterTransition">@android:transition/slide_right</item> <item name="android:windowExitTransition">@android:transition/slide_left</item> <!-- specify shared element transitions --> <item name="android:windowSharedElementEnterTransition">@transition/app_bar_transform</item> <item name="android:windowSharedElementExitTransition">@transition/app_bar_transform</item> </style> 

Затем определите свой app_bar_transform.xml как changeBounds следующим образом:

 <?xml version="1.0" encoding="utf-8"?> <transitionSet> <changeBounds/> </transitionSet> 

Поскольку макет панели приложений одинаковый во всех действиях, преобразование не произойдет.

В пользовательском AppBarLayout установите атрибут android: transitionName:

 <android.support.design.widget.AppBarLayout ... android:id="@+id/app_bar" android:transitionName="appBar" ... </android.support.design.widget.AppBarLayout> 

Используйте этот макет для панели действий во всех ваших действиях:

 <include layout="@layout/app_bar"/> 

Затем, когда вы хотите начать следующее действие, определите макет панели приложений как общий элемент, например:

 final Intent intent = new Intent(getApplicationContext(), MainActivity.class); ActivityOptions options = null; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { AppBarLayout appBar = (AppBarLayout) findViewById(R.id.app_bar); options = ActivityOptions.makeSceneTransitionAnimation(WelcomeActivity.this, appBar, "appBar"); } ActivityCompat.startActivity(WelcomeActivity.this, intent, options != null ? options.toBundle() : null); 

Это приведет к тому, что панель приложений будет работать при переходе между действиями.