Skip to content

Commit 6692d04

Browse files
committed
Fixes.
Update 1.0.1
1 parent fb25614 commit 6692d04

5 files changed

Lines changed: 30 additions & 21 deletions

File tree

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ You can download a `.aar` from GitHub's [releases page](https://github.com/DevLi
2525
Or use Gradle:
2626

2727
```groovy
28-
compile 'com.github.devlight:infinitecycleviewpager:1.0.0'
28+
compile 'com.github.devlight:infinitecycleviewpager:1.0.1'
2929
```
3030

3131
Or Maven:
@@ -34,15 +34,15 @@ Or Maven:
3434
<dependency>
3535
<groupId>com.github.devlight</groupId>
3636
<artifactId>infinitecycleviewpager</artifactId>
37-
<version>1.0.0</version>
37+
<version>1.0.1</version>
3838
<type>pom</type>
3939
</dependency>
4040
```
4141

4242
Or Ivy:
4343

4444
```groovy
45-
<dependency org='com.github.devlight' name='infinitecycleviewpager' rev='1.0.0'>
45+
<dependency org='com.github.devlight' name='infinitecycleviewpager' rev='1.0.1'>
4646
<artifact name='$AID' ext='pom'></artifact>
4747
</dependency>
4848
```

infinitecycleviewpager/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ apply plugin: "com.jfrog.bintray"
1919
apply plugin: 'com.github.dcendents.android-maven'
2020
apply plugin: 'maven'
2121

22-
version = "1.0.0"
22+
version = "1.0.1"
2323

2424
android {
2525
compileSdkVersion 23
@@ -29,7 +29,7 @@ android {
2929
minSdkVersion 11
3030
targetSdkVersion 23
3131
versionCode 1
32-
versionName "1.0.0"
32+
versionName "1.0.1"
3333
}
3434
buildTypes {
3535
release {

infinitecycleviewpager/src/main/java/com/gigamole/infinitecycleviewpager/HorizontalInfiniteCycleViewPager.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ public boolean onTouchEvent(final MotionEvent ev) {
177177
}
178178

179179
@Override
180-
public boolean onInterceptTouchEvent(MotionEvent ev) {
180+
public boolean onInterceptTouchEvent(final MotionEvent ev) {
181181
try {
182182
return mInfiniteCycleManager == null ? super.onInterceptTouchEvent(ev) :
183183
mInfiniteCycleManager.onInterceptTouchEvent(ev) && super.onInterceptTouchEvent(ev);
@@ -209,6 +209,11 @@ public int getRealItem() {
209209
getCurrentItem() : mInfiniteCycleManager.getRealItem();
210210
}
211211

212+
public int getState() {
213+
return mInfiniteCycleManager == null ?
214+
ViewPager.SCROLL_STATE_IDLE : mInfiniteCycleManager.getState();
215+
}
216+
212217
public void notifyDataSetChanged() {
213218
if (mInfiniteCycleManager != null) mInfiniteCycleManager.notifyDataSetChanged();
214219
}

infinitecycleviewpager/src/main/java/com/gigamole/infinitecycleviewpager/InfiniteCycleManager.java

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import static android.support.v4.view.ViewPager.GONE;
2020
import static android.support.v4.view.ViewPager.OnPageChangeListener;
2121
import static android.support.v4.view.ViewPager.PageTransformer;
22-
import static android.support.v4.view.ViewPager.SCROLL_STATE_SETTLING;
2322
import static android.support.v4.view.ViewPager.VISIBLE;
2423
import static android.view.View.OVER_SCROLL_NEVER;
2524
import static com.gigamole.infinitecycleviewpager.InfiniteCyclePagerAdapter.OnNotifyDataSetChangedListener;
@@ -86,8 +85,8 @@ class InfiniteCycleManager implements OnNotifyDataSetChangedListener {
8685
private boolean mIsAdapterInitialPosition;
8786
// Flag for data set changed callback to invalidateTransformer()
8887
private boolean mIsDataSetChanged;
89-
// Detect is ViewPager settling
90-
private boolean mIsSettling;
88+
// Detect is ViewPager state
89+
private int mState;
9190

9291
// Custom transform listener
9392
private OnInfiniteCyclePageTransformListener mOnInfiniteCyclePageTransformListener;
@@ -274,6 +273,10 @@ public boolean isVertical() {
274273
return mIsVertical;
275274
}
276275

276+
public int getState() {
277+
return mState;
278+
}
279+
277280
public OnInfiniteCyclePageTransformListener getOnInfiniteCyclePageTransformListener() {
278281
return mOnInfiniteCyclePageTransformListener;
279282
}
@@ -312,21 +315,15 @@ public PagerAdapter setAdapter(final PagerAdapter adapter) {
312315
public boolean onTouchEvent(final MotionEvent event) {
313316
if (mViewPageable.getAdapter() == null || mViewPageable.getAdapter().getCount() == 0)
314317
return false;
315-
if (mIsSettling || mViewPageable.isFakeDragging()) return false;
318+
if (mState == ViewPager.SCROLL_STATE_SETTLING || mViewPageable.isFakeDragging()) return false;
316319
if (event.getPointerCount() > MIN_POINTER_COUNT || !mViewPageable.hasWindowFocus())
317320
event.setAction(MotionEvent.ACTION_UP);
318321
checkHitRect(event);
319322
return true;
320323
}
321324

322325
public boolean onInterceptTouchEvent(MotionEvent event) {
323-
if (mViewPageable.getAdapter() == null || mViewPageable.getAdapter().getCount() == 0)
324-
return false;
325-
if (mIsSettling || mViewPageable.isFakeDragging()) return false;
326-
if (event.getPointerCount() > MIN_POINTER_COUNT || !mViewPageable.hasWindowFocus())
327-
event.setAction(MotionEvent.ACTION_UP);
328-
checkHitRect(event);
329-
return true;
326+
return onTouchEvent(event);
330327
}
331328

332329
// When not has window focus clamp to nearest position
@@ -469,7 +466,9 @@ public void transformPage(final View page, final float position) {
469466
// Handle page layer and bounds visibility
470467
enableHardwareLayer(page);
471468
if (mItemCount == MIN_CYCLE_COUNT) {
472-
if (position > 2.0F || position < -2.0F) {
469+
if (position > 2.0F || position < -2.0F ||
470+
(mStackCount != 0 && position > 1.0F) ||
471+
(mStackCount != 0 && position < -1.0F)) {
473472
page.setVisibility(GONE);
474473
return;
475474
} else page.setVisibility(VISIBLE);
@@ -705,7 +704,7 @@ public void onPageScrolled(
705704
mStackCount = 0;
706705

707706
// We need to rewrite states when is dragging and when setCurrentItem() from idle
708-
if (!mIsSettling || mIsInitialItem) {
707+
if (mState != ViewPager.SCROLL_STATE_SETTLING || mIsInitialItem) {
709708
mIsInitialItem = false;
710709

711710
// Detect first state from idle
@@ -746,7 +745,7 @@ else if (mOuterPageScrolledState == PageScrolledState.GOING_RIGHT && goingRight)
746745

747746
@Override
748747
public void onPageScrollStateChanged(final int state) {
749-
mIsSettling = state == SCROLL_STATE_SETTLING;
748+
mState = state;
750749
}
751750
};
752751

infinitecycleviewpager/src/main/java/com/gigamole/infinitecycleviewpager/VerticalInfiniteCycleViewPager.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ public boolean onTouchEvent(final MotionEvent ev) {
177177
}
178178

179179
@Override
180-
public boolean onInterceptTouchEvent(MotionEvent ev) {
180+
public boolean onInterceptTouchEvent(final MotionEvent ev) {
181181
try {
182182
return mInfiniteCycleManager == null ? super.onInterceptTouchEvent(ev) :
183183
mInfiniteCycleManager.onInterceptTouchEvent(ev) && super.onInterceptTouchEvent(ev);
@@ -209,6 +209,11 @@ public int getRealItem() {
209209
getCurrentItem() : mInfiniteCycleManager.getRealItem();
210210
}
211211

212+
public int getState() {
213+
return mInfiniteCycleManager == null ?
214+
ViewPager.SCROLL_STATE_IDLE : mInfiniteCycleManager.getState();
215+
}
216+
212217
public void notifyDataSetChanged() {
213218
if (mInfiniteCycleManager != null) mInfiniteCycleManager.notifyDataSetChanged();
214219
}

0 commit comments

Comments
 (0)