MCPcopy Index your code
hub / github.com/Devlight/InfiniteCycleViewPager

github.com/Devlight/InfiniteCycleViewPager @1.0.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.0.2 ↗ · + Follow
354 symbols 747 edges 21 files 44 documented · 12% updated 3y ago1.0.2 · 2016-08-31★ 5,68756 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

InfiniteCycleViewPager

Infinite cycle ViewPager with two-way orientation and interactive effect.

DevLight

Android Arsenal Android Download Crates.io Codacy Badge

U can check the sample app here.

Download

You can download a .aar from GitHub's releases page.

Or use Gradle:

compile 'com.github.devlight:infinitecycleviewpager:1.0.2'

Or Maven:

<dependency>
  <groupId>com.github.devlight</groupId>
  <artifactId>infinitecycleviewpager</artifactId>
  <version>1.0.2</version>
  <type>pom</type>
</dependency>

Or Ivy:

<dependency org='com.github.devlight' name='infinitecycleviewpager' rev='1.0.2'>
  <artifact name='$AID' ext='pom'></artifact>
</dependency>

Android SDK Version

InfiniteCycleViewPager requires a minimum SDK version of 11.

Sample

Parameters

For InfiniteCycleViewPager you can set such parameters as:

  • min scale:

    allows you to set the minimum scale of left and right bottom pages.

  • max scale:

    allows you to set the maximum scale of center top page.

  • min scale offset:

    allows you to set offset from edge to minimum scaled pages.

  • center scale offset:

    allows you to set offset from center when two pages appears.

  • model selected icon:

    allows you to set selected icon when current model is active.

  • medium scaled:

    allows you to set is scaling would be min -> max or min -> medium -> max.

  • scroll duration:

    allows you to set snap scrolling duration.

  • scroll interpolator:

    allows you to set snap scrolling interpolator.

  • page transform listener:

    allows you to set page transform listener.

  • auto scroll:

    allows you to set auto scroll in positive and negative directions.

Tips

Two-way widget need a lot of memory.

Infinite scroll available when item count more then 2.

You can set vertical or horizontal infinite cycle ViewPager.

Init

Check out in code init:

//      final VerticalInfiniteCycleViewPager infiniteCycleViewPager =
//                (VerticalInfiniteCycleViewPager) view.findViewById(R.id.vicvp);
        final HorizontalInfiniteCycleViewPager infiniteCycleViewPager =
                (HorizontalInfiniteCycleViewPager) view.findViewById(R.id.hicvp);
        infiniteCycleViewPager.setAdapter(...);
        infiniteCycleViewPager.setScrollDuration(500);
        infiniteCycleViewPager.setInterpolator(...);
        infiniteCycleViewPager.setMediumScaled(true);
        infiniteCycleViewPager.setMaxPageScale(0.8F);
        infiniteCycleViewPager.setMinPageScale(0.5F);
        infiniteCycleViewPager.setCenterPageScaleOffset(30.0F);
        infiniteCycleViewPager.setMinPageScaleOffset(5.0F);
        infiniteCycleViewPager.setOnInfiniteCyclePageTransformListener(...);

If you want to get item position just call this method:

infiniteCycleViewPager.getRealItem();

To update your ViewPager after some adapter update or else, you can call this method:

infiniteCycleViewPager.notifyDataSetChanged();

If you want to start auto scroll or stop call this methods:

// true - positive
// false - negative
infiniteCycleViewPager.startAutoScroll(...);
infiniteCycleViewPager.stopAutoScroll();

Other methods check out in sample.

And XML init:



<com.gigamole.infinitecycleviewpager.HorizontalInfiniteCycleViewPager
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:icvp_interpolator="..."
    app:icvp_center_page_scale_offset="30dp"
    app:icvp_max_page_scale="0.8"
    app:icvp_medium_scaled="true"
    app:icvp_min_page_scale="0.5"
    app:icvp_min_page_scale_offset="5dp"
    app:icvp_scroll_duration="500"/>

Getting Help

To report a specific problem or feature request, open a new issue on Github.

License

Apache 2.0 and MIT. See LICENSE file for details.

Inspiration

Author

Made in DevLight Mobile Agency

Created by Basil Miller - @gigamole

Support

If you'd like to support future development and new product features, please make a payments on Gratipay and Beerpay or become a patron on Patreon.

Gratipay Beerpay Patreon

Also, if you use this library in applications that are available on Google Play, please report it to us or author.

Thanks in advance.

Extension points exported contracts — how you extend this code

OnAdapterChangeListener (Interface)
Used internally to monitor when adapters are switched.
infinitecycleviewpager/src/main/java/com/gigamole/infinitecycleviewpager/VerticalViewPager.java
OnInfiniteCyclePageTransformListener (Interface)
Created by GIGAMOLE on 7/27/16.
infinitecycleviewpager/src/main/java/com/gigamole/infinitecycleviewpager/OnInfiniteCyclePageTransformListener.java

Core symbols most depended-on inside this repo

getCount
called by 23
infinitecycleviewpager/src/main/java/com/gigamole/infinitecycleviewpager/InfiniteCyclePagerAdapter.java
getChildCount
called by 22
infinitecycleviewpager/src/main/java/com/gigamole/infinitecycleviewpager/ViewPageable.java
getChildAt
called by 19
infinitecycleviewpager/src/main/java/com/gigamole/infinitecycleviewpager/ViewPageable.java
getAdapter
called by 14
infinitecycleviewpager/src/main/java/com/gigamole/infinitecycleviewpager/ViewPageable.java
getClientHeight
called by 12
infinitecycleviewpager/src/main/java/com/gigamole/infinitecycleviewpager/VerticalViewPager.java
populate
called by 9
infinitecycleviewpager/src/main/java/com/gigamole/infinitecycleviewpager/VerticalViewPager.java
infoForChild
called by 8
infinitecycleviewpager/src/main/java/com/gigamole/infinitecycleviewpager/VerticalViewPager.java
getPageWidth
called by 8
infinitecycleviewpager/src/main/java/com/gigamole/infinitecycleviewpager/InfiniteCyclePagerAdapter.java

Shape

Method 320
Class 28
Interface 5
Enum 1

Languages

Java100%

Modules by API surface

infinitecycleviewpager/src/main/java/com/gigamole/infinitecycleviewpager/VerticalViewPager.java112 symbols
infinitecycleviewpager/src/main/java/com/gigamole/infinitecycleviewpager/InfiniteCycleManager.java50 symbols
infinitecycleviewpager/src/main/java/com/gigamole/infinitecycleviewpager/VerticalInfiniteCycleViewPager.java45 symbols
infinitecycleviewpager/src/main/java/com/gigamole/infinitecycleviewpager/HorizontalInfiniteCycleViewPager.java45 symbols
infinitecycleviewpager/src/main/java/com/gigamole/infinitecycleviewpager/InfiniteCyclePagerAdapter.java22 symbols
infinitecycleviewpager/src/main/java/com/gigamole/infinitecycleviewpager/ViewPageable.java20 symbols
app/src/main/java/com/gigamole/sample/utils/Utils.java10 symbols
app/src/main/java/com/gigamole/sample/adapters/VerticalPagerAdapter.java7 symbols
app/src/main/java/com/gigamole/sample/adapters/HorizontalPagerAdapter.java7 symbols
infinitecycleviewpager/src/main/java/com/gigamole/infinitecycleviewpager/InfiniteCycleScroller.java4 symbols
app/src/main/java/com/gigamole/sample/utils/NonScrollableViewPager.java4 symbols
app/src/main/java/com/gigamole/sample/adapters/MainPagerAdapter.java4 symbols

For agents

$ claude mcp add InfiniteCycleViewPager \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact