Я использую ViewPager, чтобы пользователь мог просматривать бесконечную коллекцию изображений, которые необходимо извлечь из Интернета.
Я не хотел бы переходить на следующую / предыдущую страницу, если ее изображение уже не загружено. Таким образом, если пользователь проведет пальцем вправо / влево, текущее изображение будет по-прежнему отображаться с индикатором, вращающимся вверху, и переход к следующей / предыдущей странице не будет выполнен, пока изображение не будет готово. В это самое мгновение страницы меняются местами, и индикатор выполнения исчезает.
В данный момент я пытался реализовать это, используя следующий макет для дочерних представлений ViewPager и FragmentStatePageAdapter.
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ImageView
android:id="@+id/imageview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:contentDescription="@string/label_painting"
android:visibility="gone" />
<ProgressBar
android:id="@+id/progressbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" android:visibility="gone" />
</FrameLayout>
Во фрагменте я следую инструкциям, перечисленным ниже:
- В его onCreateView я делаю видимым индикатор выполнения.
- В этом же методе я запускаю поток, который выбирает изображение и декодирует поток байтов в растровое изображение.
- Как только растровое изображение становится доступным, поток отправляет сообщение обработчику, который устанавливает растровое изображение в ImageView, делает его видимым и скрывает индикатор выполнения.
Проблема с этим подходом, которому я следую, состоит в том, что в случае, если изображение еще не было получено, когда пользователь проводит пальцем, предыдущее изображение исчезает, и он видит вращающийся индикатор выполнения, пока новое изображение не станет доступным. Было бы намного приятнее продолжать видеть изображение.
Кто-нибудь смог реализовать это с помощью ViewPager или знает, что я могу изменить в своем коде?
Заранее спасибо.