How cleveroad/loopbar works
LoopBar is an Android tab-bar library for navigating selectable categories. An app supplies category data through a RecyclerView adapter, a menu, or a ViewPager; LoopBar renders the category list alongside a selected view and handles selection and scrolling. Its core runtime wraps adapters to support infinite, finite, and auto scrolling, while orientation strategies configure horizontal or vertical layouts and selection placement. The README documents overlay and RecyclerView customization as additional capabilities. Some menu and ViewPager wiring is documented but not visible in the sampled source, so those links are omitted.
Main entry points: LoopBarView.java LoopBar view · ChangeScrollModeAdapter.java Scroll mode wrapper · widget Orientation states · CategoriesAdapter.java Category wrapper
Components 16
Widget and layout
- LoopBar view
LoopBar-widget/src/main/java/com/cleveroad/loopbar/widget/LoopBarView.java - Orientation states
LoopBar-widget/src/main/java/com/cleveroad/loopbar/widget - Scroll mode wrapper
LoopBar-widget/src/main/java/com/cleveroad/loopbar/widget/ChangeScrollModeAdapter.java - Category wrapper
LoopBar-widget/src/main/java/com/cleveroad/loopbar/widget/CategoriesAdapter.java - Click listener
LoopBar-widget/src/main/java/com/cleveroad/loopbar/widget/OnItemClickListener.java
Category adapters
- Simple categories adapter
LoopBar-widget/src/main/java/com/cleveroad/loopbar/adapter/SimpleCategoriesAdapter.java - Menu adapter
LoopBar-widget/src/main/java/com/cleveroad/loopbar/adapter/SimpleCategoriesMenuAdapter.java - Pager adapter interface
LoopBar-widget/src/main/java/com/cleveroad/loopbar/adapter/ILoopBarPagerAdapter.java - Category item contract
LoopBar-widget/src/main/java/com/cleveroad/loopbar/adapter/ICategoryItem.java
Category data
- Category item
LoopBar-widget/src/main/java/com/cleveroad/loopbar/model/CategoryItem.java - Visibility state
LoopBar-widget/src/main/java/com/cleveroad/loopbar/adapter/OperationItem.java
Visual resources
- Orientation layouts
LoopBar-widget/src/main/res/layout - Selection animations
LoopBar-widget/src/main/res/animator - Widget attributes
LoopBar-widget/src/main/res/values/EndlessNavigationViewAttrs.xml
Other components
- Android app
- App RecyclerView adapter
Connections 16
- Android app → LoopBar view: configures
- Android app → App RecyclerView adapter: provides adapter
- LoopBar view → Scroll mode wrapper: wraps adapter
- Scroll mode wrapper → Category wrapper: creates
- Category wrapper → App RecyclerView adapter: binds items
- LoopBar view → Orientation states: selects layout
- Orientation states → Orientation layouts: uses layouts
- LoopBar view → Selection animations: loads animations
- LoopBar view → Widget attributes: reads attributes
- Android app → Simple categories adapter: may provide
- Android app → Menu adapter: may provide
- Simple categories adapter → Category item contract: binds contract
- Category item → Category item contract: implements
- Android app → Pager adapter interface: may implement
- Scroll mode wrapper → Visibility state: tracks visibility
- Android app → Click listener: registers listener