Android编程中ViewPage判断左右滑动方向的方法
本文实例讲述了Android编程中ViewPage判断左右滑动方向的方法。分享给大家供大家参考,具体如下:
packagecom.meityitian.app.views;
importandroid.content.Context;
importandroid.support.v4.view.ViewPager;
importandroid.util.AttributeSet;
importandroid.util.Log;
importcom.meityitian.app.utils.Debug;
/**
*重写,添加了判定滑动方向的方法
*@authorzxy
*
*/
publicclassmeityitianViewPagerextendsViewPager{
privatebooleanleft=false;
privatebooleanright=false;
privatebooleanisScrolling=false;
privateintlastValue=-1;
privateChangeViewCallbackchangeViewCallback=null;
publicmeityitianViewPager(Contextcontext,AttributeSetattrs){
super(context,attrs);
init();
}
publicmeityitianViewPager(Contextcontext){
super(context);
init();
}
/**
*initmethod.
*/
privatevoidinit(){
setOnPageChangeListener(listener);
}
/**
*listener,togetmovedirection.
*/
publicOnPageChangeListenerlistener=newOnPageChangeListener(){
@Override
publicvoidonPageScrollStateChanged(intarg0){
if(arg0==1){
isScrolling=true;
}else{
isScrolling=false;
}
Debug.infoByTag("meityitianViewPager",
"meityitianViewPageronPageScrollStateChanged:arg0:"
+arg0);
if(arg0==2){
Debug.infoByTag("meityitianViewPager",
"meityitianViewPageronPageScrollStateChangeddirectionleft?"
+left);
Debug.infoByTag("meityitianViewPager",
"meityitianViewPageronPageScrollStateChangeddirectionright?"
+right);
//notify....
if(changeViewCallback!=null){
changeViewCallback.changeView(left,right);
}
right=left=false;
}
}
@Override
publicvoidonPageScrolled(intarg0,floatarg1,intarg2){
if(isScrolling){
if(lastValue>arg2){
//递减,向右侧滑动
right=true;
left=false;
}elseif(lastValue<arg2){
//递减,向右侧滑动
right=false;
left=true;
}elseif(lastValue==arg2){
right=left=false;
}
}
Log.i("meityitianViewPager",
"meityitianViewPageronPageScrolledlast:arg2,"
+lastValue+":"+arg2);
lastValue=arg2;
}
@Override
publicvoidonPageSelected(intarg0){
if(changeViewCallback!=null){
changeViewCallback.getCurrentPageIndex(arg0);
}
}
};
/**
*得到是否向右侧滑动
*@returntrue为右滑动
*/
publicbooleangetMoveRight(){
returnright;
}
/**
*得到是否向左侧滑动
*@returntrue为左做滑动
*/
publicbooleangetMoveLeft(){
returnleft;
}
/**
*滑动状态改变回调
*@authorzxy
*
*/
publicinterfaceChangeViewCallback{
/**
*切换视图?决定于left和right。
*@paramleft
*@paramright
*/
publicvoidchangeView(booleanleft,booleanright);
publicvoidgetCurrentPageIndex(intindex);
}
/**
*set...
*@paramcallback
*/
publicvoidsetChangeViewCallback(ChangeViewCallbackcallback){
changeViewCallback=callback;
}
}
希望本文所述对大家Android程序设计有所帮助。