Патерн Swipe to refresh вже міцно закріпився в нашому побуті, завдяки безлічі популярних додатків, які ми використовуємо щодня. Суть патерну: переглядаючи, наприклад, список (ListView), користувач стосується верхньої частини списку (під Action Bar) і проводить пальцем вниз. Це рух ініціює появу «крутилки», яка переливається різними кольорами і зникає, як тільки список, який відображається на екрані, буде оновлено. Патерн в дії можна побачити, наприклад, в додатку Gmail.
Реалізувати патерн можна за допомогою спеціального layout-а під назвою SwipeRefreshLayout. Для його демонстрації ми створимо найпростіше додаток з одним екраном. Замість списку на екрані у нас буде тільки TextView. а для запуску патерну можна буде провести пальцем від верхньої частини layout-а (під Action Bar).
1. Створимо верстку екрану, де в якості типу layout-а вкажемо android.support.v4.widget.SwipeRefreshLayout. Використання Support Library дозволяє зробити доступним даний функціонал і для старих версій Андроїда.
2. Додамо набір квітів, якими буде «переливатися» наша «крутилка» - res / values / colors.xml
3. Створіть нове Активити - MainActivity.java. яке реалізує інтерфейс SwipeRefreshLayout.OnRefreshListener:
Поясню деякі моменти. Інтерфейс змусив нас реалізувати метод onRefresh (). який буде відпрацьовуватися при запуску патерну. Додаючи слухача події refresh для SwipeRefreshLayout ми вказуємо, що відповідний метод (onRefresh ()) потрібно шукати в цьому ж класі:
Метод setColorSchemeResources (). як ви вже здогадалися, встановлює набір квітів для «крутилки». Дія довільне. Якщо ви не додасте ці кольори, то крутілочка буде чорно-білою.
За ідеєю, в методі onRefresh () ми повинні ініціалізувати процес оновлення на екрані. Але так як у нас тут немає нічого, то ми просто створюємо затримку в 7 секунд на запуск нового потоку за допомогою Handler-а, а в самому потоці викликаємо метод setRefreshing (). передаючи йому false - оновлення закінчилося.
У реальній практиці ми могли б запустити тут якусь асинхронну завдання.
4. Мої конфіги для gradle:
Читайте також:
- Патерн ViewPager - приклад використання
- Патерн ViewHolder в реалізації списку ListView
- Action Bar. стилізація