package com.view.pager;
import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
/**
* 自定义ViewPager
*/
public class CustomViewPager extends ViewPager {
private boolean isLeft = false;
private boolean isRight = false;
private boolean isScrolling = false;
private int lastValue = -1;
private SlideCallback sCallback;
public CustomViewPager(Context context) {
super(context);
this.setOnPageChangeListener(pcListener);
}
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
this.setOnPageChangeListener(pcListener);
}
/**
* 滑动回调
*/
public interface SlideCallback {
/**
* 切换视图
* @param left
* @param right
*/
public void changeView(boolean left, boolean right);
public void getCurrentPageIndex(int index);
}
public void setsCallback(SlideCallback sCallback) {
this.sCallback = sCallback;
}
/**
* 滑动改变事件
*/
protected OnPageChangeListener pcListener = new OnPageChangeListener() {
@Override
public void onPageSelected(int pos) {
if (sCallback != null) {
sCallback.getCurrentPageIndex(pos);
}
}
@Override
public void onPageScrolled(int pos, float arg1, int arg2) {
if (isScrolling) {
if (lastValue > arg2) {
isRight = true;
isLeft = false;
} else if (lastValue < arg2) {
isRight = false;
isLeft = true;
} else if (lastValue == arg2) {
isRight = isLeft = false;
}
}
lastValue = arg2;
}
@Override
public void onPageScrollStateChanged(int state) {
if (state == 1) {
isScrolling = true;
} else {
isScrolling = false;
}
if (state == 2) {
if (sCallback != null) {
sCallback.changeView(isLeft, isRight);
}
isRight = isLeft = false;
}
}
};
}
具体使用
final String TAG = "TAG";
SlideCallback sCallback = new SlideCallback() {
boolean isLeft = false;
boolean isRight = false;
@Override
public void getCurrentPageIndex(int index) {
if(isLeft && !isRight){
Log.e(TAG,"左滑");
} else if (isRight && !isLeft){
Log.e(TAG,"右滑");
}
}
@Override
public void changeView(boolean isLeft, boolean isRight) {
this.isLeft = isLeft;
this.isRight = isRight;
}
};