2013-04-17 4 views
0

У меня проблема.Android ленивые изображения ViewFlipper

У меня есть фрагмент с ViewFlipper и некоторый строковый массив данных (образы URL).

Как сделать ленивую загрузку этих изображений и показать прогрессную панель до загрузки изображения (и, если возможно, кэшировать их)? Могу ли я использовать другое представление (не ViewFlipper)?

И второй вопрос. Как создать представление, показывающее текущую позицию изображения? Например, серия белых точек с черным под текущим изображением. Если текущее изображение первого - первая черная точка. Спасибо.

ответ

0

В Google есть учебный класс, отвечающий на ваш первый вопрос here. Он показывает вам, как загружать растровое изображение в фоновом режиме с помощью AsyncTask и кэшировать его как в памяти с помощью LruCache, так и на диске с DiskLruCache (включенным в загрузку BitmapFun.zip, найденным по ссылке), пока отображается ProgressBar до изображения Скачано

Можно ли использовать другой вид (а не ViewFlipper)?

В приведенном выше примере используется ViewPager.

серия белых точек с черным под текущим изображением.

Я не знаю, есть ли такое представление доступно из Android SDK, но this сторонний виджет (Apache 2.0 лицензия), кажется, что вы хотите.

Как я могу поддерживать связь с ImageView и ProgressBar?

Я не уверен, что понял вопрос, но если вы спрашиваете, как вы идете от ProgressBar (в то время как изображение загружается) в ImageView, то ответ заключается в использовании FrameLayout с ProgressBar и ImageView в нем :

<FrameLayout ...> 
    <ProgressBar ... /> 
    <ImageView 
    android:id="@+id/imageView" 
    ... /> 

</FrameLayout> 

(см image_detail_fragment.xml в упражнении для более подробной информации)

ImageView будет нарисован перед ProgressBar, но так как он не будет изначально иметь никакого фона и никакого изображения не будет прозрачным и ProgressBar будет показывать.

Затем извлечь ImageView из кода, используя его идентификатор, и когда вы загрузили изображение в Bitmap вы используете:

imageView.setImageDrawable(loadedImage); 

Теперь, когда ImageView есть изображение не будет прозрачным больше и ProgressBar не будет отображаться (вы также можете добавить идентификатор в панель выполнения, если вы хотите установить его в View.GONE для оптимизации вашего макета).

+0

Как я могу поддерживать связь с ImageView и ProgressBar? –

Смежные вопросы