Skip to content

Commit

Permalink
fix #17
Browse files Browse the repository at this point in the history
  • Loading branch information
daimajia committed Nov 24, 2014
1 parent 4a70d46 commit dcd1b17
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 31 deletions.
Expand Up @@ -231,7 +231,7 @@ public <T extends BaseSliderView> void addSlider(T imageContent){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
mViewPager.nextItem();
moveNextPosition(true);
}
};

Expand Down Expand Up @@ -641,25 +641,52 @@ public void removeAllSliders(){
}
}

/**
*set current slider
* @param position
*/
public void setCurrentPosition(int position, boolean smooth) {
if (getRealAdapter() == null)
throw new IllegalStateException("You did not set a slider adapter");
if(position >= getRealAdapter().getCount()){
throw new IllegalStateException("Item position is not exist");
}
int p = mViewPager.getCurrentItem() % getRealAdapter().getCount();
int n = (position - p) + mViewPager.getCurrentItem();
mViewPager.setCurrentItem(n, smooth);
}

public void setCurrentPosition(int position) {
setCurrentPosition(position, true);
}

/**
* move to prev slide.
*/
public void movePrevPosition() {
public void movePrevPosition(boolean smooth) {

if (getRealAdapter() == null)
throw new IllegalStateException("You did not set a slider adapter");

mViewPager.setCurrentItem(mViewPager.getCurrentItem() - 1, true);
mViewPager.setCurrentItem(mViewPager.getCurrentItem() - 1, smooth);
}

public void movePrevPosition(){
movePrevPosition(true);
}

/**
* move to next slide.
*/
public void moveNextPosition() {
public void moveNextPosition(boolean smooth) {

if (getRealAdapter() == null)
throw new IllegalStateException("You did not set a slider adapter");

mViewPager.setCurrentItem(mViewPager.getCurrentItem() + 1, true);
mViewPager.setCurrentItem(mViewPager.getCurrentItem() + 1, smooth);
}

public void moveNextPosition() {
moveNextPosition(true);
}
}
Expand Up @@ -22,32 +22,6 @@ public InfiniteViewPager(Context context, AttributeSet attrs) {
@Override
public void setAdapter(PagerAdapter adapter) {
super.setAdapter(adapter);
// offset first element so that we can scroll to the left
setCurrentItem(0);
}

@Override
public void setCurrentItem(int item) {
// offset the current item to ensure there is space to scroll
item = getOffsetAmount() + (item % getAdapter().getCount());
super.setCurrentItem(item);

}
public void nextItem(){
super.setCurrentItem(getCurrentItem() + 1);
}

private int getOffsetAmount() {
if (getAdapter() instanceof InfinitePagerAdapter) {
InfinitePagerAdapter infAdapter = (InfinitePagerAdapter) getAdapter();
// allow for 100 back cycles from the beginning
// should be enough to create an illusion of infinity
// warning: scrolling to very high values (1,000,000+) results in
// strange drawing behaviour
return infAdapter.getRealCount() * 100;
} else {
return 0;
}
}

}

0 comments on commit dcd1b17

Please sign in to comment.