# rubensousa/gravitysnaphelper

**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/rubensousa-gravitysnaphelper).**

_How this analysis was created: the description and tags below were written by an AI model that read this project's README and public documentation pages; stars, license and language come straight from the GitHub API. The model does not read the source code._

4,989 stars · 618 forks · Java · Apache-2.0

## Links

- GitHub: https://github.com/rubensousa/GravitySnapHelper
- awesome-repositories: https://awesome-repositories.com/repository/rubensousa-gravitysnaphelper.md

## Topics

`android` `recyclerview` `snapping`

## Description

GravitySnapHelper is an Android list scrolling controller and RecyclerView snap helper designed to manage scroll velocity and align list items to specific container edges. It functions as a positioning mechanism to ensure elements snap to the viewport boundaries when user interaction stops.

The project provides specific support for right-to-left layout directions, ensuring that list items align correctly to screen edges regardless of the device language direction.

The tool includes capabilities for regulating scroll movement, such as restricting fling distances using pixel offsets or container percentages. It also monitors scroll speed and velocity to determine when items should trigger a transition to the next snap target.

## Tags

### User Interface & Experience

- [Scroll Alignment Controls](https://awesome-repositories.com/f/user-interface-experience/scroll-interaction-handlers/scroll-state-controllers/scroll-alignment-controls.md) — Manages scroll velocity and restricts fling distance to control the alignment and centering of elements within a viewport.
- [Directional Edge Snapping](https://awesome-repositories.com/f/user-interface-experience/item-lists/directional-edge-snapping.md) — Aligns items in a scrollable list to a specific edge with automatic support for right-to-left layout directions. ([source](https://github.com/rubensousa/gravitysnaphelper#readme))
- [Edge Alignment Snapping](https://awesome-repositories.com/f/user-interface-experience/list-components/recyclerview-lists/edge-alignment-snapping.md) — Aligns items in a RecyclerView to the edges of the screen automatically when a user stops scrolling.
- [RecyclerView Scroll Listeners](https://awesome-repositories.com/f/user-interface-experience/recyclerview-scroll-listeners.md) — Hooks into RecyclerView scroll state changes to intercept and modify final resting positions.
- [Scroll Snapping](https://awesome-repositories.com/f/user-interface-experience/scroll-snapping.md) — Implements mechanisms to align a scrolling list item to the viewport boundary upon release.
- [Bidirectional Layout Support](https://awesome-repositories.com/f/user-interface-experience/frontend-ui-toolkits/right-to-left-support/bidirectional-layout-support.md) — Ensures scrollable list items snap correctly to viewport edges regardless of the device language direction.
- [Scroll Speed Multipliers](https://awesome-repositories.com/f/user-interface-experience/navigation-scrolling-tools/scroll-navigation/scroll-speed-multipliers.md) — Adjusts scrolling velocity to determine if items snap to container edges for a better tactile feel. ([source](https://github.com/rubensousa/gravitysnaphelper#readme))
- [RTL Layouts](https://awesome-repositories.com/f/user-interface-experience/rtl-layouts.md) — Adjusts snap targets based on layout direction to ensure correct edge alignment in right-to-left locales.
- [Scroll Behavior Control](https://awesome-repositories.com/f/user-interface-experience/scroll-interaction-handlers/scroll-state-controllers/scroll-behavior-control.md) — Restricts how far a list flings by setting a maximum pixel distance or a percentage of the container size. ([source](https://github.com/rubensousa/gravitysnaphelper#readme))
- [Velocity-Based Completions](https://awesome-repositories.com/f/user-interface-experience/toast-notifications/swipe-to-dismiss-gestures/navigation-gestures/velocity-based-completions.md) — Monitors scroll speed to determine if a fling has enough momentum to trigger a transition to the next item.

### Mobile Development

- [Android Scroll Physics Customization](https://awesome-repositories.com/f/mobile-development/android-scroll-physics-customization.md) — Improves the tactile feel of scrolling lists by controlling fling distance and scroll velocity.

### Software Engineering & Architecture

- [RecyclerView Layout Extensions](https://awesome-repositories.com/f/software-engineering-architecture/modular-extensibility-frameworks/layout-manager-extensions/recyclerview-layout-extensions.md) — Extends Android's RecyclerView LayoutManager to enable automatic alignment of items to container edges.

### System Administration & Monitoring

- [Fling Distance Constraints](https://awesome-repositories.com/f/system-administration-monitoring/threshold-monitoring/scroll-offset-thresholds/fling-distance-constraints.md) — Constrains the maximum scroll distance of a fling operation using pixel offsets or container percentages.
