ViewPage判断左右滑动

转载自:http://blog.csdn.net/lan410812571/article/details/9063161

判断viewpage左右滑动的方法:


package com.meityitian.app.views;

[java]  view plain copy
  1. import android.content.Context;  
  2. import android.support.v4.view.ViewPager;  
  3. import android.util.AttributeSet;  
  4. import android.util.Log;  
  5.   
  6. import com.meityitian.app.utils.Debug;  
  7.   
  8. /** 
  9.  * 重写,添加了判定滑动方向的方法 
  10.  * @author zxy 
  11.  * 
  12.  */  
  13. public class meityitianViewPager extends ViewPager {  
  14.     private boolean left = false;  
  15.     private boolean right = false;  
  16.     private boolean isScrolling = false;  
  17.     private int lastValue = -1;  
  18.     private ChangeViewCallback changeViewCallback = null;  
  19.   
  20.     public meityitianViewPager(Context context, AttributeSet attrs) {  
  21.         super(context, attrs);  
  22.         init();  
  23.     }  
  24.   
  25.     public meityitianViewPager(Context context) {  
  26.         super(context);  
  27.         init();  
  28.     }  
  29.   
  30.     /** 
  31.      * init method . 
  32. */  
  33.     private void init() {  
  34.         setOnPageChangeListener(listener);  
  35.     }  
  36.   
  37.     /** 
  38.      * listener ,to get move direction . 
  39. */  
  40.     public  OnPageChangeListener listener = new OnPageChangeListener() {  
  41.         @Override  
  42.         public void onPageScrollStateChanged(int arg0) {  
  43.             if (arg0 == 1) {  
  44.                 isScrolling = true;  
  45.             } else {  
  46.                 isScrolling = false;  
  47.             }  
  48.   
  49.             Debug.infoByTag("meityitianViewPager",  
  50.                     "meityitianViewPager  onPageScrollStateChanged : arg0:"  
  51.                             + arg0);  
  52.             if (arg0 == 2) {  
  53.                 Debug.infoByTag("meityitianViewPager",  
  54.                         "meityitianViewPager  onPageScrollStateChanged  direction left ? "  
  55.                                 + left);  
  56.                 Debug.infoByTag("meityitianViewPager",  
  57.                         "meityitianViewPager  onPageScrollStateChanged  direction right ? "  
  58.                                 + right);  
  59.                 //notify ....  
  60.                 if(changeViewCallback!=null){  
  61.                     changeViewCallback.changeView(left, right);  
  62.                 }  
  63.                 right = left = false;  
  64.             }  
  65.   
  66.         }  
  67.   
  68.         @Override  
  69.         public void onPageScrolled(int arg0, float arg1, int arg2) {  
  70.             if (isScrolling) {  
  71.                 if (lastValue > arg2) {  
  72.                     // 递减,向右侧滑动  
  73.                     right = true;  
  74.                     left = false;  
  75.                 } else if (lastValue < arg2) {  
  76.                     // 递减,向右侧滑动  
  77.                     right = false;  
  78.                     left = true;  
  79.                 } else if (lastValue == arg2) {  
  80.                     right = left = false;  
  81.                 }  
  82.             }  
  83.             Log.i("meityitianViewPager",  
  84.                     "meityitianViewPager onPageScrolled  last :arg2  ,"  
  85.                             + lastValue + ":" + arg2);  
  86.             lastValue = arg2;  
  87.         }  
  88.   
  89.         @Override  
  90.         public void onPageSelected(int arg0) {  
  91.             if(changeViewCallback!=null){  
  92.                 changeViewCallback.getCurrentPageIndex(arg0);  
  93.             }  
  94.         }  
  95.     };  
  96.       
  97.     /** 
  98.      * 得到是否向右侧滑动 
  99.      * @return true 为右滑动 
  100. */  
  101.     public boolean getMoveRight(){  
  102.         return right;  
  103.     }  
  104.       
  105.     /** 
  106.      * 得到是否向左侧滑动 
  107.      * @return true 为左做滑动 
  108. */  
  109.     public boolean getMoveLeft(){  
  110.         return left;  
  111.     }  
  112.       
  113.     /** 
  114.      *  滑动状态改变回调 
  115.      * @author zxy 
  116.      * 
  117. */  
  118.     public interface ChangeViewCallback{  
  119.         /** 
  120.          * 切换视图 ?决定于left和right 。 
  121.          * @param left 
  122.          * @param right 
  123. */  
  124.         public  void changeView(boolean left,boolean right);  
  125.         public  void  getCurrentPageIndex(int index);  
  126.     }  
  127.       
  128.     /** 
  129.      * set ... 
  130.      * @param callback 
  131. */  
  132.     public void  setChangeViewCallback(ChangeViewCallback callback){  
  133.         changeViewCallback = callback;  
  134.     }  
  135. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值