Показуємо зображення в інтерфейсі, українська документація Android
Цей урок поєднує попередні уроки розділу, в ньому показано як завантажувати безліч зображень у компоненти ViewPager та GridView, використовуючи окремі потоки та кеш, торкаючись паралельної роботи та зміни конфігурації.
Завантаження зображень у компонент ViewPager
Примітка: якщо у вас мало картинок і ви впевнені, що пам'яті для них вистачить, можливо в цьому випадку краще скористатися класами PagerAdapter або FragmentPagerAdapter.
Приклад реалізації ViewPager із дочірніми компонентами ImageView. ViewPager та адаптер перебувають у головному явищі:
Далі наведено реалізацію фрагмента, в якому знаходяться компоненти ImageView . Це може показати розумним, але ви спробуйте знайти недоліки реалізації. Як це можна покращити?
На щастя, ми попередили про помилку: зображення завантажуються з ресурсу в основному потоці, що може призвести до ефекту зависання програми та подальшого закриття користувача. Використовуйте об'єкт типу AsyncTask , як описано в уроці Обробка зображень в окремому потоці.
Будь-яка додаткова обробка (зміна розмірів або завантаження зображень по мережі) може виконуватися в класі BitmapWorkerTask (який ми створили в минулих уроках) не завдаючи шкоди чуйності інтерфейсу користувача. Якщо в окремому потоці виконується щось більше, ніж просто завантаження зображення безпосередньо з диска, можливо, буде корисним також додавання кеш-пам'яті або дискового кешу, як ми розповідали в уроці Кешування зображень. Приклад:
Якщо ви зробили все, як описувалося в цьому та попередніх уроках розділу, ви отримаєте відмінну чуйність компонента ViewPager з мінімальноюзатримкою завантаження зображень, а також можливість робити обробку зображень в окремому потоці за необхідності.
Завантаження зображень у компонент GridView
Паттерн сітчасті списки зручний для відображення наборів зображень, і для його реалізації може використовуватися компонент GridView, в якому кілька зображень показано на екрані і ще готова до того, що користувач буде гортати екран вгору або вниз. Використовуючи такий підхід, ви повинні переконатися, що інтерфейс залишається плавним, витрата пам'яті контролюється, а паралельна робота виконується коректно. (Пам'ятайте, що GridView видаляє невидимі дочірні елементи).
Для початку візьмемо стандартний GridView із дочірніми ImageView елементами, розміщеними всередині фрагмента. І знову спробуйте знайти кращий підхід: