Как запретить 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