- SwipeRefreshLayout
- Пример на Kotlin
- Устаревший пример для Java
- Обновляем список
- Android-потяните, чтобы обновить фрагмент с вкладками
- 1 ответ
- Похожие вопросы:
- Потяните вверх, чтобы обновить в Android RecyclerView
- 6 ответов
- Новый SwipeRefreshLayout из библиотеки Android support — «потяните чтобы обновить»
- Новый SwipeRefreshLayout из библиотеки Android support — «потяните чтобы обновить»
SwipeRefreshLayout
В марте 2014 года был представлен новый компонент android.support.v4.widget.SwipeRefreshLayout, который входил в состав библиотеки Support Library v4. Сейчас это отдельная библиотека в составе AndroidX.
Компонент позволяет отказаться от сторонних библиотек и собственных велосипедов для реализации шаблона «Pull to Refresh», когда пользователь сдвигает экран, чтобы обновить данные. Подобное поведение можно увидеть в клиентах для Твиттера, чтобы получить новую порцию твитов, не дожидаясь, когда список сообщений обновится самостоятельно.
Пример на Kotlin
В марте 2020 года обзавелась стабильной версией.
В методах setColorSchemeColors() или setColorSchemeResources() следует указать используемые цвета.
Компонент достаточно интересный с занимательной анимацией. Вначале анимация представляла собой цветные полоски под заголовком программы. Позже анимацию заменили в стиле Material Design, теперь это маленький кружочек, внутри которого крутятся цветные линии (или чёрная линия, если не использовать метод setColorSchemeResources() со цветами).
Запустите пример и потяните экран сверх вниз, чтобы увидеть эффект обновления данных.
Устаревший пример для Java
Обернём компоненты родительским элементом SwipeRefreshLayout. На панели инструментов данного компонента нет, поэтому придётся писать код вручную.
В примере реализуется интерфейс OnRefreshListener с методом onRefresh(), в котором следует обновить поступающие данные. В нашем случае просто генерируются случайные числа.
При первом появлении библиотеки использовался метод setColorScheme(), который объявлен устаревшим. Вместо него появились два новых метода setColorSchemeColors() и setColorSchemeResources(). Принцип остался тот же, вам нужно указать четыре цвета по константам Color.XXX или из ресурсов. Вы можете не использовать вызов метода с цветными линиями, тогда будет выводиться только чёрная линия по умолчанию.
Компонент достаточно интересный с занимательной анимацией. Вначале анимация представляла собой цветные полоски под заголовком программы, как представлено на видео.
Позже анимацию заменили в стиле Material Design, теперь это маленький кружочек, внутри которого крутятся цветные линии (или чёрная линия, если не использовать метод setColorSchemeResources() со цветами).
Обновляем список
По такому же принципу обновляем данные в списке.
При каждой попытке обновить список будет добавляться текущая дата и время.
Не забывайте, что обновление может занимать длительное время и использовать сеть для получения данных. Поэтому следует позаботиться о выполнении в другом потоке.
Источник
Android-потяните, чтобы обновить фрагмент с вкладками
Я пытаюсь сделать обновление, скользя вниз по верхней части listview возможных. Я перешел по этой ссылке , чтобы заставить его работать, и он работает на activty. Но мне это нужно на фрагментах, которые вкладываются в основное действие, поэтому я не могу, как показывает пример, использовать этот метод на моих фрагментах.
Вот правильный код при использовании действия:
TestActivity.java
Я уже несколько раз пытался заставить этот метод работать в моем фрагментном коде, но мне это не удалось. Приведенный ниже код представляет собой пример рабочего фрагмента без какого-либо ввода TestActivity.
InfoFragment.java
BaseActivity, который обычно требуется для этой деятельности:
BaseActivity.java
Публикация моих неудачных попыток реализации метода activity в моих фрагментах, наверное, не сработает, поэтому я их не публикую.
Если кто-то из вас может помочь, большое спасибо.
1 ответ
Когда я медленно тяну вниз, чтобы обновить, я вижу, что круг UIActivityIndicator медленно становится более полным, прежде чем он начнет обновление. Как раз перед тем, как круг будет завершен и обновление действительно сработает, содержимое прыгает/дергается вниз, а затем круг начинает вращаться. Я.
Привет, как я могу реализовать chrisbanes потяните, чтобы обновить библиотеку , использующих ActionBar Шерлок фрагмент и ViewSwitcher? Я использую этот код Main.java // get an instance of FragmentTransaction from your Activity FragmentManager fragmentManager = getSupportFragmentManager();.
Android SDK наконец-то добавил SwipeRefreshLayout. Может быть, вы можете добавить это в свой макет? http://developer.android.com/ссылка/android/поддержка/v4/виджет/SwipeRefreshLayout.html
Похожие вопросы:
Я пытаюсь реализовать потяните, чтобы обновить в моем представлении таблицы приложения. Я изучал примеры людей и пришел к выводу, что это в значительной степени суть: var.
Я хочу реализовать pull down to refresh в Angular. Многие библиотеки JS не работают с Angular, но я нашел эту: https://github.com/mgcrea/angular-pull-to-refresh Однако это не работает. Я вижу текст.
У меня есть экран с двумя вкладками, и для каждой вкладки я пытаюсь запустить другой фрагмент с другим макетом. В настоящее время у меня есть следующее: MainFragmentActivity-деятельность, которая.
Когда я медленно тяну вниз, чтобы обновить, я вижу, что круг UIActivityIndicator медленно становится более полным, прежде чем он начнет обновление. Как раз перед тем, как круг будет завершен и.
Привет, как я могу реализовать chrisbanes потяните, чтобы обновить библиотеку , использующих ActionBar Шерлок фрагмент и ViewSwitcher? Я использую этот код Main.java // get an instance of.
Можно ли создать действие pull to refresh в WKInterfaceTable в watch os 2? Есть один вопрос, но он связан с watch os 1. WatchKit потяните, чтобы обновить
У меня есть приложение, которое берет рестораны из shared Google Api и отображает их в виде таблицы. Тогда я использую Углерод-комплект для потяните, чтобы обновить содержание TableView для refresh.
У меня есть приложение android с фрагментом, который загружает данные из веб-сервиса и помещает их в список textViews (я не использую ListView). Есть ли способ перезагружать фрагмент каждый раз.
Если я хочу, чтобы вручную запустить потяните, чтобы обновить на контейнер в Codename один после загрузки формы. Пожалуйста, сообщите, если у кого-нибудь есть какие-либо идеи.
Источник
Потяните вверх, чтобы обновить в Android RecyclerView
Я использовал SwipeRefreshLayout из библиотеки поддержки v4 следующим образом:
В этой стратегии, если я опускаю экран, когда виден первый элемент списка, вызывается метод onRefresh ().
Это называется опусканием для обновления. Но мне нужен обратный эффект. То есть, если я подниму экран, когда виден последний элемент списка, тогда должен быть вызван метод или он должен быть уведомлен в любом случае. Является ли это возможным? Если возможно, дайте мне дорогу.
6 ответов
В вашем классе адаптера RecyclerView / ListView при накачивании последнего элемента вы можете поместить оператор if и вызвать метод.
Код, если вы используете RecyclerView: —
Также добавьте ниже код: —
У меня такая же проблема. Поэтому в методах Refresh () я снова инициализировал повторное представление и « бесконечный прослушиватель прокрутки », это сработало для меня
Вот моя версия ответа Вишвеша
В приложении для Android «Потяните для обновления», также известное как SwipeRefreshLayout, используется всякий раз, когда нам нужно обновить содержимое представления с помощью вертикального смахивания. Он принимает только один дочерний элемент, что означает компонент, который мы хотим обновить. Он использует механизм слушателя, чтобы информировать слушателя, который держит этот компонент, о том, что произошло событие обновления .
Обычный XML-код Pull To Refresh / SwipeRefreshLayout:
Что ж, вы можете проверить, когда достигнут последний элемент списка, и запустить анимацию + обновление.
Вы сами это сказали, вы используете SwipeRefreshLayout .. он используется для прокрутки, чтобы обновить, он не предназначен / не способен достичь вашей цели.
Как я это вижу, вам придется написать свое собственное представление.
Источник
Новый SwipeRefreshLayout из библиотеки Android support — «потяните чтобы обновить»
Тихо и незаметно вместе с обновлением библиотеки Android support до версии 19.1 в нее прокрался новый компонент, который часто бывает нужным и полезным в быту. Сей совсем крохотный росчерк я посвящаю ему, SwipeRefreshLayout.
Он добавляет функционал, который один мой коллега называет «резинка от трусов», а остальные знают этот UI-паттерн под названием «потяни, чтобы обновить». Он бывает нужен, когда есть какой-то контент, который пользователь хочет часто обновлять, и может это сделать, просто потянув контент жестом вниз, а потом отпустив.
Очень похоже, что компонент был создан для GoogleNow, а потом перекочевал в support lib (очень похожа анимация).
Алгоритм простой.
- Компонент «оборачивается» вокруг View или Layout, для которого нужно сделать обновление и может содержать только одного потомка (похоже на ScrollView).
- Устанавливается OnRefreshListener с одним единственным методом onRefresh(). Как на него реагировать — решаем сами.
- Когда нужно показать, что идет обновление (и запустить анимацию), вызываем метод setRefreshing(boolean) и передаем ему true. Наиболее логичным кажется вызов метода внутри onRefresh().
- Когда обновление закончено, вызываем метод setRefreshing(boolean) и передаем ему false.
Давайте попробуем набросать пример использования.
Наш XML (если нужно, можно и динамически создать компонент и добавить в него потомка, компонент наследуется от ViewGroup).
Теперь наша Activity, а именно метод onCreate:
В данном случае я сделал нашу Activity реализующей интерфейс OnRefreshListener
Обратите внимание на метод setColorScheme, он как раз и раскрашивает в разные цвета прогресс во время обновления. В видео ниже видно, о чем я говорю. Первый цвет из 4-х — цвет прогресса во время оттягивания контента вниз перед обновлением. Остальные — сменяющиеся цвета прогресса.
А теперь сам onRefresh();
UPD:
Для желающих добавил саму APK
Ссылка на APK в виде кода, чтобы было жить легче:
Источник
Новый SwipeRefreshLayout из библиотеки Android support — «потяните чтобы обновить»
Тихо и незаметно вместе с обновлением библиотеки Android support до версии 19.1 в нее прокрался новый компонент, который часто бывает нужным и полезным в быту. Сей совсем крохотный росчерк я посвящаю ему, SwipeRefreshLayout.
Он добавляет функционал, который один мой коллега называет «резинка от трусов», а остальные знают этот UI-паттерн под названием «потяни, чтобы обновить». Он бывает нужен, когда есть какой-то контент, который пользователь хочет часто обновлять, и может это сделать, просто потянув контент жестом вниз, а потом отпустив.
Очень похоже, что компонент был создан для GoogleNow, а потом перекочевал в support lib (очень похожа анимация).
Алгоритм простой.
- Компонент «оборачивается» вокруг View или Layout, для которого нужно сделать обновление и может содержать только одного потомка (похоже на ScrollView).
- Устанавливается OnRefreshListener с одним единственным методом onRefresh(). Как на него реагировать — решаем сами.
- Когда нужно показать, что идет обновление (и запустить анимацию), вызываем метод setRefreshing(boolean) и передаем ему true. Наиболее логичным кажется вызов метода внутри onRefresh().
- Когда обновление закончено, вызываем метод setRefreshing(boolean) и передаем ему false.
Давайте попробуем набросать пример использования.
Наш XML (если нужно, можно и динамически создать компонент и добавить в него потомка, компонент наследуется от ViewGroup).
Теперь наша Activity, а именно метод onCreate:
В данном случае я сделал нашу Activity реализующей интерфейс OnRefreshListener
Обратите внимание на метод setColorScheme, он как раз и раскрашивает в разные цвета прогресс во время обновления. В видео ниже видно, о чем я говорю. Первый цвет из 4-х — цвет прогресса во время оттягивания контента вниз перед обновлением. Остальные — сменяющиеся цвета прогресса.
А теперь сам onRefresh();
UPD:
Для желающих добавил саму APK
Ссылка на APK в виде кода, чтобы было жить легче:
Источник