Intereting Posts
Как получить доступное свободное пространство на sdcard из приложения Android? Отправка push-уведомлений в приложение в ограниченной настройке – fake_push_profile не найден Ионный Предварительный просмотр камеры Android в фрагменте Fling и pinchzoom для просмотра изображений в одном действии Gradle зависимости с Travis CI в Android-проекте Android прокрутка фона растровых плит Слишком большой код и слишком много ошибок констант (Android Studio) Дальнейшее понимание setRetainInstance (true) Использование Bluetooth в эмуляторе Android NativeAdsExpress заставляет RecyclerView прокручивать, чтобы NativeAd полностью отображался при первой загрузке Firebase Android офлайн Как определить время выполнения Android (Dalvik или ART)? Идентификаторы элементов меню в проекте библиотеки Android? Как запустить группы модульных тестов с помощью градиента в Android Unregistering Android Broadcast Receiver в onReceive выбрасывает «Получатель не зарегистрирован»

Как запретить viewpager инициализировать следующий вид по умолчанию в android?

Я внедрил viewpager, чтобы показать некоторые экраны внедрения в Android-приложении. На нем есть 4 разных экрана, на которых есть разные анимации. Моя проблема заключается в том, что когда пользователь находится на 0 фрагменте viewpager, фрагмент 1 инициализируется по умолчанию, а анимация заканчивается в фоновом режиме и когда пользователь переходит к фрагменту 1, тогда нет анимации (по окончании анимации, когда фрагмент 1 инициализируется одновременно с фрагментом 1). То, что я хочу сделать, это то, что когда пользователь находится на фрагменте 0, тогда только фрагмент 0 должен инициализировать не следующий фрагмент, который является фрагментом 1. И когда пользователь переходит к фрагменту 1, тогда фрагмент 0 должен уничтожить, чтобы при отмене назад к фрагменту 0 он должен Снова инициализируйте анимацию. Как я могу это сделать.

Вы можете изменить лимит памяти страниц ViewPAger на

viewPager.setOffscreenPageLimit(0); 

Deafult равно 1, поэтому один фрагмент / вид слева и справа останется в памяти.

НО это плохая практика, viewPager поддерживает один фрагмент / просмотр с каждой стороны для лучшей производительности и плавной и немедленной прокрутки. Я предлагаю вам создать прослушиватель для ViewPager который запускает анимацию при прокрутке до желаемого фрагмента (не запуская анимацию в onCreateView ). Проверьте ViewPager.OnPageChangeListener , особенно onPageSelected(int position)

Edit: Google признает, что параметр 0 для ограничения является слабым, в новейших версиях logcat говорит:

 Requested offscreen page limit 0 too small; defaulting to 1 

Поэтому вам нужно использовать прослушиватель для анимации стрельбы, это также лучше для производительности. Как вы видите, метод, который вы хотите использовать, устарел автором (сам Google). Метод из класса ViewPager

 public void setOffscreenPageLimit(int limit) { if (limit < DEFAULT_OFFSCREEN_PAGES) { Log.w(TAG, "Requested offscreen page limit " + limit + " too small; defaulting to " + DEFAULT_OFFSCREEN_PAGES); limit = DEFAULT_OFFSCREEN_PAGES; } if (limit != mOffscreenPageLimit) { mOffscreenPageLimit = limit; populate(); } } 

Вы также можете создать собственный ViewPager или изменить DEFAULT_OFFSCREEN_PAGES или mOffscreenPageLimit и fire mOffscreenPageLimit populate(); Метод, все используя Reflections, smth, как это

 Field f = ViewPager.class.getDeclaredField("DEFAULT_OFFSCREEN_PAGES"); f.setAccessible(true); f.setInt(viewPager, 0); 

Затем setOffscreenPageLimit(0); должно сработать

Вы можете использовать обратный вызов фрагмента в режимеResume, как в действии, для запуска анимации. Ссылка: http://developer.android.com/reference/android/app/Fragment.html#onResume%28%29