Skip to content
This repository was archived by the owner on Jul 14, 2021. It is now read-only.

Commit f303188

Browse files
author
huangyu.hy
committed
Add method to setInfiniteRatio
1 parent cd42d1b commit f303188

File tree

4 files changed

+28
-7
lines changed

4 files changed

+28
-7
lines changed

sample/src/main/java/com/tmall/ultraviewpager/sample/PagerActivity.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ protected void onCreate(Bundle savedInstanceState) {
102102
ultraViewPager.setScrollMode(UltraViewPager.ScrollMode.HORIZONTAL);
103103
adapter = new UltraPagerAdapter(false);
104104
ultraViewPager.setAdapter(adapter);
105+
ultraViewPager.setInfiniteRatio(100);
105106
gravity_indicator = UltraViewPager.Orientation.HORIZONTAL;
106107
break;
107108
case 2:

ultraviewpager/src/main/java/com/tmall/ultraviewpager/IUltraViewPagerFeature.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@ interface IUltraViewPagerFeature {
7070
IUltraIndicatorBuilder initIndicator(int focusResId, int normalResId, int gravity);
7171

7272
/**
73-
*
7473
* @param focusBitmap defines the bitmap when indicator is focused
7574
* @param normalBitmap defines the bitmap when indicator is in the default state (not focused).
7675
* @param gravity specifies how to align the indicator. for example, using Gravity.BOTTOM | Gravity.RIGHT
@@ -79,14 +78,14 @@ interface IUltraViewPagerFeature {
7978
IUltraIndicatorBuilder initIndicator(Bitmap focusBitmap, Bitmap normalBitmap, int gravity);
8079

8180
/**
82-
* Remove indicator
81+
* Remove indicator
8382
*/
8483
void disableIndicator();
8584

8685
/**
8786
* Enable auto-scroll mode
8887
*
89-
* @param intervalInMillis The interval time to scroll in milliseconds.
88+
* @param intervalInMillis The interval time to scroll in milliseconds.
9089
*/
9190
void setAutoScroll(int intervalInMillis);
9291

@@ -105,7 +104,7 @@ interface IUltraViewPagerFeature {
105104
/**
106105
* Supply a maximum width for this ViewPager.
107106
*
108-
* @param width width
107+
* @param width width
109108
*/
110109
void setMaxWidth(int width);
111110

@@ -148,7 +147,7 @@ interface IUltraViewPagerFeature {
148147
void setMultiScreen(float ratio);
149148

150149
/**
151-
* Adjust the height of the ViewPager to the height of child automatically.
150+
* Adjust the height of the ViewPager to the height of child automatically.
152151
*/
153152
void setAutoMeasureHeight(boolean status);
154153

@@ -172,8 +171,15 @@ interface IUltraViewPagerFeature {
172171
/**
173172
* Set margins for this ViewPager
174173
*
175-
* @param left the left margin in pixels
174+
* @param left the left margin in pixels
176175
* @param right the right margin in pixels
177176
*/
178177
void setScrollMargin(int left, int right);
178+
179+
/**
180+
* The items.size() would be scale to item.size()*infiniteRatio in fact
181+
*
182+
* @param infiniteRatio
183+
*/
184+
void setInfiniteRatio(int infiniteRatio);
179185
}

ultraviewpager/src/main/java/com/tmall/ultraviewpager/UltraViewPager.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,4 +448,12 @@ private void stopTimer() {
448448
timer.removeCallbacksAndMessages(null);
449449
timer.listener = null;
450450
}
451+
452+
@Override
453+
public void setInfiniteRatio(int infiniteRatio) {
454+
if (viewPager.getAdapter() != null
455+
&& viewPager.getAdapter() instanceof UltraViewPagerAdapter) {
456+
((UltraViewPagerAdapter) viewPager.getAdapter()).setInfiniteRatio(infiniteRatio);
457+
}
458+
}
451459
}

ultraviewpager/src/main/java/com/tmall/ultraviewpager/UltraViewPagerAdapter.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,14 @@ interface UltraViewPagerCenterListener {
5757
private float multiScrRatio = Float.NaN;
5858
private boolean hasCentered; //ensure that the first item is in the middle when enabling loop-mode
5959
private int scrWidth;
60+
private int infiniteRatio;
6061
private UltraViewPagerCenterListener centerListener;
6162

6263
private SparseArray viewArray = new SparseArray();
6364

6465
public UltraViewPagerAdapter(PagerAdapter adapter) {
6566
this.adapter = adapter;
67+
infiniteRatio = INFINITE_RATIO;
6668
}
6769

6870
@Override
@@ -72,7 +74,7 @@ public int getCount() {
7274
if (adapter.getCount() == 0) {
7375
count = 0;
7476
} else {
75-
count = adapter.getCount() *INFINITE_RATIO;
77+
count = adapter.getCount() * infiniteRatio;
7678
}
7779
} else {
7880
count = adapter.getCount();
@@ -262,4 +264,8 @@ boolean isEnableMultiScr() {
262264
void setCenterListener(UltraViewPagerCenterListener listener) {
263265
centerListener = listener;
264266
}
267+
268+
void setInfiniteRatio(int infiniteRatio) {
269+
this.infiniteRatio = infiniteRatio;
270+
}
265271
}

0 commit comments

Comments
 (0)