# scwang90/smartrefreshlayout

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/scwang90-smartrefreshlayout).**

25,141 stars · 4,958 forks · Java · Apache-2.0

## Links

- GitHub: https://github.com/scwang90/SmartRefreshLayout
- Homepage: https://segmentfault.com/a/1190000010066071
- awesome-repositories: https://awesome-repositories.com/repository/scwang90-smartrefreshlayout.md

## Topics

`android` `android-ui` `footer` `header` `overscroll` `pull-to-refresh` `pulltorefresh` `refreshlayout`

## Description

SmartRefreshLayout is a pull-to-refresh framework and gesture interaction library for Android. It provides a scroll view wrapper that integrates interactive refresh headers and loading footers into mobile user interfaces, coordinating synchronized scrolling and touch events.

The project features a pluggable architecture for custom refresh indicators and secondary refresh mechanisms. It utilizes damping-based gesture translation and overscroll rebound mechanisms to manage the tactile feel of drag resistance and physics-based animations.

The library covers a broad range of interaction logic, including nested scroll coordination to prevent movement conflicts and automatic load-more triggering for pagination. It supports various visual effects such as water-drop animations and bezier circle indicators, along with flexible layout options for fixed header positioning and static content embedding.

## Tags

### Mobile Development

- [Scroll View Wrappers](https://awesome-repositories.com/f/mobile-development/scroll-view-wrappers.md) — Provides a scroll view wrapper that integrates interactive refresh headers and loading footers into Android UIs. ([source](https://github.com/scwang90/SmartRefreshLayout/blob/main/README.md))
- [Android UI Components](https://awesome-repositories.com/f/mobile-development/android-ecosystem/android-ui-components.md) — Creates branded scrolling experiences with secondary refresh levels and themed loading indicators.
- [Android Scroll Physics Customization](https://awesome-repositories.com/f/mobile-development/android-scroll-physics-customization.md) — Fine-tunes the tactile feel of scrollable views through adjusted drag resistance and overscroll physics.

### User Interface & Experience

- [Pull-to-Refresh Components](https://awesome-repositories.com/f/user-interface-experience/pull-to-refresh-components.md) — Integrates pull-to-refresh and pull-to-load functionality into Android applications with custom animations.
- [Gesture Interaction Libraries](https://awesome-repositories.com/f/user-interface-experience/gesture-interaction-libraries.md) — Handles complex touch gestures, scroll physics, and rebound effects within mobile user interfaces.
- [Tactile Feel Tuning](https://awesome-repositories.com/f/user-interface-experience/physics-engines/scroll/tactile-feel-tuning.md) — Provides fine-grained control over drag rates, rebound durations, and bounce effects for a natural scrolling feel. ([source](https://github.com/scwang90/SmartRefreshLayout/blob/master/art/md_property.md))
- [Pull-to-Refresh Frameworks](https://awesome-repositories.com/f/user-interface-experience/pull-to-refresh-components/pull-to-refresh-frameworks.md) — Provides a framework for implementing pull-down refresh and pull-up loading behaviors with customizable animations.
- [Trigger Configurations](https://awesome-repositories.com/f/user-interface-experience/pull-to-refresh-components/trigger-configurations.md) — Configures refresh event triggers using custom animations, distances, and update listeners. ([source](https://github.com/scwang90/SmartRefreshLayout/blob/main/README_EN.md))
- [Pull-Up Loading Indicators](https://awesome-repositories.com/f/user-interface-experience/pull-up-loading-indicators.md) — Implements loading events triggered when a user drags a footer up or reaches the bottom of a list. ([source](https://github.com/scwang90/SmartRefreshLayout/blob/main/README_EN.md))
- [Nested Scroll Coordination](https://awesome-repositories.com/f/user-interface-experience/scroll-areas/scroll-orchestrators/nested-scroll-coordination.md) — Synchronizes touch events between a parent container and internal scrollable views to prevent movement conflicts.
- [Scroll Synchronization](https://awesome-repositories.com/f/user-interface-experience/scroll-event-handlers/scroll-synchronization.md) — Synchronizes scrolling behavior between the refresh wrapper and internal scrollable content to ensure seamless interactions. ([source](https://github.com/scwang90/SmartRefreshLayout/blob/main/README_EN.md))
- [Android Nested Scrolling](https://awesome-repositories.com/f/user-interface-experience/scroll-interaction-handlers/scroll-state-controllers/scroll-observers/android-nested-scrolling.md) — Coordinates complex view hierarchies to ensure seamless interaction between nested scrolling components.
- [Refresh-Enabled Scroll Wrappers](https://awesome-repositories.com/f/user-interface-experience/scroll-interaction-handlers/scroll-state-controllers/scroll-observers/android-nested-scrolling/refresh-enabled-scroll-wrappers.md) — Wraps scrollable views to add interactive refresh headers and loading footers with synchronized scrolling.
- [View Wrappers](https://awesome-repositories.com/f/user-interface-experience/view-wrappers.md) — Implements a container-based design that wraps Android views to inject refresh and loading logic.
- [Drag Friction Settings](https://awesome-repositories.com/f/user-interface-experience/animation-and-motion-systems/physics-motion-dynamics/interaction-physics/drag-friction-settings.md) — Defines the damping effect by setting the ratio between finger movement and visual layout displacement. ([source](https://github.com/scwang90/SmartRefreshLayout/blob/master/art/md_faq.md))
- [Bezier-Based Progress Indicators](https://awesome-repositories.com/f/user-interface-experience/canvas-clipping-utilities/circular-clipping/circular-screen-rendering/circular-progress-indicators/bezier-based-progress-indicators.md) — Supports rendering circular, animated refresh indicators using wave effects and Bezier paths. ([source](https://github.com/scwang90/SmartRefreshLayout/blob/main/refresh-header/src/main/java/com/scwang/smart/refresh/header/BezierCircleHeader.java))
- [Multi-Level Refresh Menus](https://awesome-repositories.com/f/user-interface-experience/dashboard-widgets/dashboard-data-filters/view-refresh-mechanisms/multi-level-refresh-menus.md) — Implements a two-level refresh mechanism providing users access to additional options beyond the primary pull-down action. ([source](https://github.com/scwang90/SmartRefreshLayout))
- [Multitouch Gesture Processing](https://awesome-repositories.com/f/user-interface-experience/interaction-handling/multitouch-gesture-processing.md) — Handles simultaneous finger inputs to drive refresh animations without interrupting the main scroll logic. ([source](https://github.com/scwang90/SmartRefreshLayout/blob/master/art/md_custom.md))
- [Refresh Interaction Modes](https://awesome-repositories.com/f/user-interface-experience/interactivity-mode-coordination/refresh-interaction-modes.md) — Offers multiple interaction modes including translation, stretching, and full-screen overlays for refresh areas. ([source](https://github.com/scwang90/SmartRefreshLayout/blob/main/README.md))
- [Refresh Indicator Transitions](https://awesome-repositories.com/f/user-interface-experience/navigation-routing/screen-transitions/refresh-indicator-transitions.md) — Provides movement styles like sliding, scaling, or full-screen overlays for refresh indicator entrance. ([source](https://github.com/scwang90/SmartRefreshLayout/blob/master/art/md_custom.md))
- [Overscroll Rebound Physics](https://awesome-repositories.com/f/user-interface-experience/overscroll-rebound-physics.md) — Calculates the return-to-zero animation when a user releases a drag beyond the content boundary.
- [Refresh Indicator Customizations](https://awesome-repositories.com/f/user-interface-experience/progress-steps/refresh-indicator-customizations.md) — Enables swapping default refresh headers with custom views or animations via configuration. ([source](https://github.com/scwang90/SmartRefreshLayout/blob/master/art/md_faq.md))
- [Physics-Based Animations](https://awesome-repositories.com/f/user-interface-experience/progress-steps/refresh-indicator-customizations/physics-based-animations.md) — Implements water-drop visual effects that react dynamically to pull-down gestures to indicate refresh progress. ([source](https://github.com/scwang90/SmartRefreshLayout/blob/main/refresh-header/src/main/java/com/scwang/smart/refresh/header/WaterDropHeader.java))
- [Scroll Behavior Control](https://awesome-repositories.com/f/user-interface-experience/scroll-interaction-handlers/scroll-state-controllers/scroll-behavior-control.md) — Toggles nested scrolling and content translation to manage interactions between scrollable areas and refresh elements. ([source](https://github.com/scwang90/SmartRefreshLayout/blob/master/art/md_property.md))
- [Damping Translation Mappings](https://awesome-repositories.com/f/user-interface-experience/touch-gesture-handlers/touch-event-processors/coordinate-to-translation-mapping/input-to-action-mappings/gesture-to-action-mappings/damping-translation-mappings.md) — Maps raw finger movement to visual displacement using ratios to create natural-feeling drag resistance.
- [Translation-Based Layout Shifting](https://awesome-repositories.com/f/user-interface-experience/translation-based-layout-shifting.md) — Moves the entire content area vertically to expose the refresh header during pull-down gestures.
- [State-Driven Animations](https://awesome-repositories.com/f/user-interface-experience/ui-animations/state-driven-animations.md) — Triggers specific visual transitions and interpolators based on the current refresh or loading state.

### Part of an Awesome List

- [Refresh Controls](https://awesome-repositories.com/f/awesome-lists/devtools/refresh-controls.md) — Provides an extensible system for defining custom visual behavior and event handling for refresh headers. ([source](https://github.com/scwang90/SmartRefreshLayout/blob/main/refresh-header/src/main/java/com/scwang/smart/refresh/header/DeliveryHeader.java))

### Programming Languages & Runtimes

- [Automatic Pagination Triggers](https://awesome-repositories.com/f/programming-languages-runtimes/dynamic-class-creation/class-loading-mechanisms/lazy-loading/scroll-based-resource-loading/automatic-pagination-triggers.md) — Automatically starts the loading process for pagination when a list reaches the bottom during fast scrolling. ([source](https://github.com/scwang90/SmartRefreshLayout/blob/master/art/md_faq.md))

### Data & Databases

- [Refresh Indicator](https://awesome-repositories.com/f/data-databases/data-compression-algorithms/pluggable-architectures/refresh-indicator.md) — Provides a pluggable system for swapping out refresh indicators by implementing a common interface.

### Graphics & Multimedia

- [Interactive Gesture-Driven Animations](https://awesome-repositories.com/f/graphics-multimedia/custom-animation-effects/interactive-gesture-driven-animations.md) — Designs interactive headers and footers that react to touch gestures using bezier paths and water-drop effects.
- [Load-More Eligibility Logic](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/tile-map-renderers/viewport-aware-tiling/asynchronous-tile-loading/loading-behavior-controls/load-more-eligibility-logic.md) — Determines whether the load-more trigger is active based on whether the current content fills a full page. ([source](https://github.com/scwang90/SmartRefreshLayout/blob/master/art/md_faq.md))
