Skip to content

Commit dc91fe4

Browse files
authored
Merge pull request #129 from smarteist/dev
Dev
2 parents 248be7d + 3f2286b commit dc91fe4

File tree

5 files changed

+59
-8
lines changed

5 files changed

+59
-8
lines changed

README.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,16 @@ This is an amazing image slider for the Android .
1010
You can easily load images with your custom layout, and there are many kinds of amazing animations you can choose.
1111

1212
```groovy
13-
implementation 'com.github.smarteist:autoimageslider:1.3.5'
13+
implementation 'com.github.smarteist:autoimageslider:1.3.6'
1414
```
1515
If you are using appcompat libraries use this one, but please migrate to androidx as soon as you can.
1616
```groovy
1717
implementation 'com.github.smarteist:autoimageslider:1.3.2-appcompat'
1818
```
1919

2020
### New Feautures
21-
* Infinite adapter implemented
22-
* Slider API improvements.
21+
* Minor sliderView API improvements.
22+
* Ability to disable infinite mode.
2323

2424
### New Changes
2525
* Auto cycle Bugs fixed.

app/src/main/java/com/smarteist/imageslider/MainActivity.java

+8
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import androidx.appcompat.app.AppCompatActivity;
1010

1111
import com.smarteist.autoimageslider.IndicatorAnimations;
12+
import com.smarteist.autoimageslider.IndicatorView.draw.controller.DrawController;
1213
import com.smarteist.autoimageslider.SliderAnimations;
1314
import com.smarteist.autoimageslider.SliderView;
1415
import com.smarteist.imageslider.Model.SliderItem;
@@ -39,6 +40,13 @@ protected void onCreate(Bundle savedInstanceState) {
3940
sliderView.setScrollTimeInSec(3);
4041
sliderView.setAutoCycle(false);
4142

43+
sliderView.setOnIndicatorClickListener(new DrawController.ClickListener() {
44+
@Override
45+
public void onIndicatorClicked(int position) {
46+
sliderView.setCurrentPagePosition(position);
47+
}
48+
});
49+
4250
}
4351

4452
public void renewItems(View view) {

autoimageslider/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ ext {
1515
siteUrl = 'https://github.com/smarteist'
1616
gitUrl = 'https://github.com/smarteist/android-image-slider.git'
1717

18-
libraryVersion = '1.3.5'
18+
libraryVersion = '1.3.6'
1919
organization = 'smarteistbintray' // if you push to organization's repository.
2020
developerId = 'smarteist'
2121
developerName = 'Ali Hosseini'

autoimageslider/src/main/java/com/smarteist/autoimageslider/SliderPager.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1283,7 +1283,7 @@ private void triggerOnPageChangeEvent(int position) {
12831283
int n = position % realCount;
12841284
eachListener.onPageSelected(n);
12851285
} else {
1286-
eachListener.onPageSelected(mAdapter.getCount());
1286+
eachListener.onPageSelected(position);
12871287
}
12881288

12891289
}

autoimageslider/src/main/java/com/smarteist/autoimageslider/SliderView.java

+46-3
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public class SliderView extends FrameLayout
7171
private InfinitePagerAdapter mInfinitePagerAdapter;
7272
private boolean mPausedSliding = false;
7373
private OnSliderPageListener mPageListener;
74+
private boolean mIsInfiniteAdapter = true;
7475

7576
/*Constructor*/
7677
public SliderView(Context context) {
@@ -201,6 +202,24 @@ public void setSliderAdapter(@NonNull SliderViewAdapter pagerAdapter) {
201202
mPagerIndicator.setDynamicCount(true);
202203
}
203204

205+
/**
206+
* @param pagerAdapter Set a SliderAdapter that will supply views
207+
* for this slider as needed.
208+
*/
209+
public void setSliderAdapter(@NonNull SliderViewAdapter pagerAdapter, boolean infiniteAdapter) {
210+
this.mIsInfiniteAdapter = infiniteAdapter;
211+
if (!infiniteAdapter) {
212+
this.mPagerAdapter = pagerAdapter;
213+
//registerAdapterDataObserver();
214+
mSliderPager.setAdapter(pagerAdapter);
215+
//setup with indicator
216+
mPagerIndicator.setCount(getAdapterItemsCount());
217+
mPagerIndicator.setDynamicCount(true);
218+
} else {
219+
setSliderAdapter(pagerAdapter);
220+
}
221+
}
222+
204223
/**
205224
* @return Sliders Pager
206225
*/
@@ -604,7 +623,7 @@ public int getIndicatorUnselectedColor() {
604623
/**
605624
* This method handles sliding behaviors
606625
* which passed into {@link #SliderView#mHandler}
607-
*
626+
* <p>
608627
* see {@link #SliderView#startAutoCycle()}
609628
*/
610629
@Override
@@ -643,11 +662,35 @@ public void slideToNextPosition() {
643662
}
644663
}
645664

665+
666+
public void slideToPreviousPosition() {
667+
668+
int currentPosition = mSliderPager.getCurrentItem();
669+
int adapterItemsCount = getAdapterItemsCount();
670+
671+
if (mAutoCycleDirection == AUTO_CYCLE_DIRECTION_BACK_AND_FORTH && adapterItemsCount > 1) {
672+
if (currentPosition % (adapterItemsCount - 1) == 0) {
673+
mFlagBackAndForth = !mFlagBackAndForth;
674+
}
675+
if (mFlagBackAndForth) {
676+
mSliderPager.setCurrentItem(--currentPosition, true);
677+
} else {
678+
mSliderPager.setCurrentItem(++currentPosition, true);
679+
}
680+
} else if (mAutoCycleDirection == AUTO_CYCLE_DIRECTION_LEFT) {
681+
mSliderPager.setCurrentItem(++currentPosition, true);
682+
} else {
683+
mSliderPager.setCurrentItem(--currentPosition, true);
684+
}
685+
}
686+
646687
//sync infinite pager adapter with real one
647688
@Override
648689
public void dataSetChanged() {
649-
mInfinitePagerAdapter.notifyDataSetChanged();
650-
mSliderPager.setCurrentItem((getAdapterItemsCount() - 1) * (InfinitePagerAdapter.INFINITE_SCROLL_LIMIT / 2), false);
690+
if (mIsInfiniteAdapter) {
691+
mInfinitePagerAdapter.notifyDataSetChanged();
692+
mSliderPager.setCurrentItem((getAdapterItemsCount() - 1) * (InfinitePagerAdapter.INFINITE_SCROLL_LIMIT / 2), false);
693+
}
651694
}
652695

653696
@Override

0 commit comments

Comments
 (0)