explaingit

chrisbanes/android-pulltorefresh

8,653JavaAudience · developerComplexity · 2/5LicenseSetup · easy

TLDR

An archived Android library that added pull-to-refresh gesture support to lists, grids, web views, and scroll views, superseded by Android's built-in SwipeRefreshLayout and kept today for historical reference and legacy app maintenance.

Mindmap

mindmap
  root((android-pulltorefresh))
    What it does
      Pull-to-refresh gesture
      No official alternative then
      Archived project
    Supported views
      List and grid
      Web and scroll view
      View pager
    Features
      Top and bottom pull
      Animated indicator
      End-of-list listener
    Status
      Apache 2.0
      Superseded by SwipeRefreshLayout
      Legacy use only
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Maintain pull-to-refresh in a legacy Android project still targeting API level 9 (Android 2.3) where the modern built-in widget is unavailable.

USE CASE 2

Study how pull-to-refresh was implemented before Android's official support library shipped it as a built-in component.

USE CASE 3

Migrate an existing app away from this library to the official SwipeRefreshLayout by comparing the two APIs side by side.

Tech stack

JavaAndroidMaven

Getting it running

Difficulty · easy Time to first run · 30min

Project is archived and no longer maintained, Android's built-in SwipeRefreshLayout is the recommended replacement for new projects.

Free to use and modify for any purpose including commercial, as long as you preserve the copyright and license notice, Apache 2.0 license.

In plain English

This is a no-longer-maintained Android library that added a "pull to refresh" gesture to list-based screens in apps. The README opens with a clear notice that the project is archived and no longer receiving updates, so it is mainly of historical interest today. At the time of its active development, it was a popular solution for a common mobile UX pattern. The idea is simple: a user scrolls down past the top of a list, sees a loading indicator appear, and releases their finger to trigger a data refresh. This library made that behavior available across several Android view types, including standard lists, expandable lists, grids, web views, scroll views, and view pagers. It supported pulling from the top, pulling from the bottom, or both directions at once. Beyond the basic gesture, the library included animated scrolling that worked on older Android versions (back to 2.3), on-screen indicators to signal when a pull was available, and a listener that fired when a user reached the end of a list. Configuration options were extensive, covering colors, text labels, and animation behavior, with documentation hosted on a companion wiki. The project used Maven for dependency management, which was the standard approach for Android libraries of its era. A sample application was published to Google Play so developers could try it before integrating. The library was released under the Apache 2.0 license, meaning it could be used freely in commercial apps. Android's official support libraries later shipped pull-to-refresh as a built-in component, which made third-party solutions like this one redundant. The author credits an earlier library by Johan Nilsson as the original inspiration, though the graphics and animations were later replaced entirely.

Copy-paste prompts

Prompt 1
I'm maintaining a legacy Android 2.3 app and need pull-to-refresh. How do I add android-pulltorefresh via Maven and wire it to my ListView?
Prompt 2
I want to understand how android-pulltorefresh animated the loading indicator. Walk me through the key classes and how gesture detection works.
Prompt 3
I'm migrating from android-pulltorefresh to Android's built-in SwipeRefreshLayout. What layout XML and Java code changes do I need to make?
Open on GitHub → Explain another repo

← chrisbanes on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.