Android потянуть чтобы обновить

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 один после загрузки формы. Пожалуйста, сообщите, если у кого-нибудь есть какие-либо идеи.

Читайте также:  Syberia 2 для android

Источник

Потяните вверх, чтобы обновить в 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 (очень похожа анимация).

Алгоритм простой.

  1. Компонент «оборачивается» вокруг View или Layout, для которого нужно сделать обновление и может содержать только одного потомка (похоже на ScrollView).
  2. Устанавливается OnRefreshListener с одним единственным методом onRefresh(). Как на него реагировать — решаем сами.
  3. Когда нужно показать, что идет обновление (и запустить анимацию), вызываем метод setRefreshing(boolean) и передаем ему true. Наиболее логичным кажется вызов метода внутри onRefresh().
  4. Когда обновление закончено, вызываем метод 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 (очень похожа анимация).

Алгоритм простой.

  1. Компонент «оборачивается» вокруг View или Layout, для которого нужно сделать обновление и может содержать только одного потомка (похоже на ScrollView).
  2. Устанавливается OnRefreshListener с одним единственным методом onRefresh(). Как на него реагировать — решаем сами.
  3. Когда нужно показать, что идет обновление (и запустить анимацию), вызываем метод setRefreshing(boolean) и передаем ему true. Наиболее логичным кажется вызов метода внутри onRefresh().
  4. Когда обновление закончено, вызываем метод setRefreshing(boolean) и передаем ему false.

Давайте попробуем набросать пример использования.
Наш XML (если нужно, можно и динамически создать компонент и добавить в него потомка, компонент наследуется от ViewGroup).

Теперь наша Activity, а именно метод onCreate:

В данном случае я сделал нашу Activity реализующей интерфейс OnRefreshListener

Обратите внимание на метод setColorScheme, он как раз и раскрашивает в разные цвета прогресс во время обновления. В видео ниже видно, о чем я говорю. Первый цвет из 4-х — цвет прогресса во время оттягивания контента вниз перед обновлением. Остальные — сменяющиеся цвета прогресса.

А теперь сам onRefresh();

UPD:
Для желающих добавил саму APK
Ссылка на APK в виде кода, чтобы было жить легче:

Источник

Оцените статью