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

本文实例讲述了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;
 }
}

希望本文所述对大家Android程序设计有所帮助。

(0)

相关推荐

  • android 通过向viewpage中添加listview来完成滑动效果(类似于qq滑动界面)

    文件名:page.xml 复制代码 代码如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="fill_parent"    android:layout_height="fill

  • Android中实现水平滑动(横向滑动)ListView示例

    水平的ListView-HorizontalListView的使用 Android中ListView默认的是竖直方向的滑动,由于项目的需求,需要ListView是水平滑动的.有很多的方式可以实现,但是比较好的一种方式就是自己封装一个控件,使用方式和ListView的使用方式是一样的.需要完善的地方:获取到的图片大小没有处理.在界面上展示的是图片的原大小.为了更好的展示效果,应该压缩成统一的尺寸. HorizontalListView.java 代码如下: /** * 横向的ListView *

  • Android App中ViewPager所带来的滑动冲突问题解决方法

    叙述 滑动冲突可以说是日常开发中比较常见的一类问题,也是比较让人头疼的一类问题,尤其是在使用第三方框架的时候,两个原本完美的控件,组合在一起之后,忽然发现整个世界都不好了. 关于滑动冲突 滑动冲突分类: 滑动冲突,总的来说就是两类. 1.同方向滑动冲突 比如ScrollView嵌套ListView,或者是ScrollView嵌套自己 2.不同方向滑动冲突 比如ScrollView嵌套ViewPager,或者是ViewPager嵌套ScrollView,这种情况其实很典型.现在大部分应用最外层都是

  • Android利用ViewPager实现滑动广告板实例源码

    •android-support-v4.jar,这是谷歌官方给我们提供的一个兼容低版本Android设备的软件包,里面包囊了只有在Android3.0以上可以使用的api.而ViewPager就是其中之一,利用它我们可以做很多事情,从最简单的导航,到页面切换菜单等等. •ViewPager的功能就是可以使视图滑动,就像Lanucher左右滑动那样. •本Demo向大家演示ViewPager的使用,并在用户未滑动View时,每隔5s钟自动切换到下一个View(循环切换),而当用户有Touch到Vi

  • Android实现View滑动的6种方式

    本文实例为大家分享了Android实现View滑动的具体方法,供大家参考,具体内容如下 1.View的滑动简介 View的滑动是Android实现自定义控件的基础,同时在开发中我们也难免会遇到View的滑动的处理.其实不管是那种滑动的方式基本思想都是类似的:当触摸事件传到View时,系统记下触摸点的坐标,手指移动时系统记下移动后的触摸的坐标并算出偏移量,并通过偏移量来修改View的坐标. 实现View滑动有很多种方法,这篇文章主要讲解六种滑动的方法,分别是:layout().offsetLeft

  • Android中RecyclerView实现横向滑动代码

    RecyclerView 是Android L版本中新添加的一个用来取代ListView的SDK,它的灵活性与可替代性比listview更好.本文给大家介绍Android中RecyclerView实现横向滑动代码,一起看看吧. android.support.v7.widget.RecyclerView 功能:RecyclerView横向滑动 控件:<android.support.v7.widget.RecyclerView /> Java类:RecyclerView.GalleryAdap

  • Android App中使用ViewPager+Fragment实现滑动切换效果

    在android应用中,多屏滑动是一种很常见的风格,没有采用viewpager的代码实现会很长,如果采用ViewPager,代码就会短很多,但是使用ViewPager也有弊端:需要导入android-support-v4.jar.细节无法控制.不过现在情况已经不一样了,android-support-v4中提供了很多实用的功能,以至于现在新建一个android工程默认都会导入这个jar包.那我们就也采用viewpager来做滑动吧.另外一个概念就是Fragment和FragmentActivit

  • 解析Android中实现滑动翻页之ViewFlipper的使用详解

    1)View切换的控件-ViewFlipper介绍 ViewFilpper类继承于ViewAnimator类.而ViewAnimator类继承于FrameLayout. 查看ViewAnimator类的源码可以看出此类的作用主要是为其中的View切换提供动画效果.该类有如下几个和动画相关的方法. setInAnimation:设置View进入屏幕时候使用的动画.该方法有两个重载方法,即可以直接传入Animation对象,也可以传入定义的Animation文件的resourceID. setOut

  • Android中实现监听ScrollView滑动事件

    时候我们需要监听ScroView的滑动情况,比如滑动了多少距离,是否滑到布局的顶部或者底部.可惜的是SDK并没有相应的方法,不过倒是提供了一个 复制代码 代码如下: protected void onScrollChanged(int x, int y, int oldx, int oldy) 方法,显然这个方法是不能被外界调用的,因此就需要把它暴露出去,方便使用.解决方式就是写一个接口, 复制代码 代码如下: package com.example.demo1;    public inter

  • android配合viewpager实现可滑动的标签栏示例分享

    复制代码 代码如下: package com.example.playtabtest.view; import com.example.playtabtest.R; import android.app.Activity;import android.content.Context;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;impor

随机推荐