android判断滑动方向,Android编程中ViewPage判断左右滑动方向的方法

package com.meityitian.app.views;

import android.content.Context;

import android.support.v4.view.ViewPager;

import android.util.AttributeSet;

import android.util.Log;

import com.meityitian.app.utils.Debug;

/**

* 重写,添加了判定滑动方向的方法

* @author zxy

*

*/

public class meityitianViewPager extends ViewPager {

private boolean left = false;

private boolean right = false;

private boolean isScrolling = false;

private int lastValue = -1;

private ChangeViewCallback changeViewCallback = null;

public meityitianViewPager(Context context, AttributeSet attrs) {

super(context, attrs);

init();

}

public meityitianViewPager(Context context) {

super(context);

init();

}

/**

* init method .

*/

private void init() {

setOnPageChangeListener(listener);

}

/**

* listener ,to get move direction .

*/

public OnPageChangeListener listener = new OnPageChangeListener() {

@Override

public void onPageScrollStateChanged(int arg0) {

if (arg0 == 1) {

isScrolling = true;

} else {

isScrolling = false;

}

Debug.infoByTag("meityitianViewPager",

"meityitianViewPager onPageScrollStateChanged : arg0:"

+ arg0);

if (arg0 == 2) {

Debug.infoByTag("meityitianViewPager",

"meityitianViewPager onPageScrollStateChanged direction left ? "

+ left);

Debug.infoByTag("meityitianViewPager",

"meityitianViewPager onPageScrollStateChanged direction right ? "

+ right);

//notify ....

if(changeViewCallback!=null){

changeViewCallback.changeView(left, right);

}

right = left = false;

}

}

@Override

public void onPageScrolled(int arg0, float arg1, int arg2) {

if (isScrolling) {

if (lastValue > arg2) {

// 递减,向右侧滑动

right = true;

left = false;

} else if (lastValue < arg2) {

// 递减,向右侧滑动

right = false;

left = true;

} else if (lastValue == arg2) {

right = left = false;

}

}

Log.i("meityitianViewPager",

"meityitianViewPager onPageScrolled last :arg2 ,"

+ lastValue + ":" + arg2);

lastValue = arg2;

}

@Override

public void onPageSelected(int arg0) {

if(changeViewCallback!=null){

changeViewCallback.getCurrentPageIndex(arg0);

}

}

};

/**

* 得到是否向右侧滑动

* @return true 为右滑动

*/

public boolean getMoveRight(){

return right;

}

/**

* 得到是否向左侧滑动

* @return true 为左做滑动

*/

public boolean getMoveLeft(){

return left;

}

/**

* 滑动状态改变回调

* @author zxy

*

*/

public interface ChangeViewCallback{

/**

* 切换视图 ?决定于left和right 。

* @param left

* @param right

*/

public void changeView(boolean left,boolean right);

public void getCurrentPageIndex(int index);

}

/**

* set ...

* @param callback

*/

public void setChangeViewCallback(ChangeViewCallback callback){

changeViewCallback = callback;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值