ViewPage判断左右滑动
2015-08-26 14:40
197 查看
判断viewpage左右滑动的方法:
package com.meityitian.app.views;
[java] view
plaincopy
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;
}
}
package com.meityitian.app.views;
[java] view
plaincopy
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;
}
}
相关文章推荐
- 小议:忘记SharePoint 2013 PassPhrase 怎么办?
- json2form实例
- Hibernate环境搭建超详细
- cocos2d-x3.2命令打包
- mysql中的数学函数
- scala函数组合
- C/C++面试常见关键字总结(二)
- SharePoint PowerShell命令系列 (2) Export-SPWeb & Import-SPWeb
- 黑马程序员——Set接口
- 如何修改Android应用程序的图标和名字
- 设置PL/SQL Developer 字符集
- Fetching https://dl-ssl.google.com/android/
- nginx负载均衡配置详解
- Eclipse 里切换项目的的jdk版本
- IOS学习第五篇——类别(category)
- IOS--AFNetWorking
- Effective C++——条款4(第1章)
- 我以为我都不会再哭了
- CentOS6.5下安装Oracle11g
- 子网掩码划分随手记