Android编程中ViewPage判断左右滑动方向的方法_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;
 }
}

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, 判断
, viewpage
滑动方向
viewpage左右滑动、viewpage禁止左右滑动、viewpage 禁止滑动、viewpage滑动监听、viewpage滑动,以便于您获取更多的相关知识。

时间: 2024-10-21 18:37:33

Android编程中ViewPage判断左右滑动方向的方法_Android的相关文章

Android编程实现小说阅读器滑动效果的方法_Android

本文实例讲述了Android编程实现小说阅读器滑动效果的方法.分享给大家供大家参考,具体如下: 看过小说都知道小说阅读器翻页有好多种效果,比如仿真翻页,滑动翻页,等等.由于某种原因,突然想写一个简单点的滑动翻页效果.在这里写出来也没有什么意图,希望大家可以根据这个效果举一反三,写出其他的效果.图就不上了. 下面是代码:大家理解onTouch事件即可 package com.example.testscroll.view; import android.content.Context; impor

Android编程中Tween动画和Frame动画实例分析_Android

本文实例讲述了Android编程中Tween动画和Frame动画实现方法.分享给大家供大家参考,具体如下: Animation主要有两种动画模式:Tween动画和Frame动画 Tween动画由四种类型组成 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动画效果 rotate 画面转移旋转动画效果 res目录下新建anim创建Tween.xml <?xml version="1.0" encoding="utf-8

Android编程中关于单线程模型的理解与分析_Android

本文讲述了Android编程中关于单线程模型的理解与分析.分享给大家供大家参考,具体如下: 当一个Android程序启动时,Android系统会同时启动一个对应的主线程(Main Thread). 由于这个主线程(Main Thread)主要的任务就是对UI相关的事件进行处理(例如显示文本,处理点击事件,显示图片等),系统对每一个组件的调用都是从主线程中分发出去的,所以又常被称为UI线程. IMP,Android单线程模型的核心原则就是:只能在UI线程(Main Thread)中对UI进行处理.

Android编程实现向SD卡写入数据的方法_Android

本文实例讲述了Android编程实现向SD卡写入数据的方法.分享给大家供大家参考,具体如下: 1.代码: /** * 向sdcard中写入文件 * @param filename 文件名 * @param content 文件内容 */ public void saveToSDCard(String filename,String content) throws Exception{ File file=new File("/mnt/sdcard", filename); Output

Android编程实现识别与挂载U盘的方法_Android

本文实例讲述了Android编程实现识别与挂载U盘的方法.分享给大家供大家参考,具体如下: 关于U盘的挂载可以先看一下这篇文章<Android2.3实现SD卡与U盘自动挂载的方法>,作者是将U盘直接挂载在SD卡下.我的机器是MTK6575的平台,支持sdcard和sdcard2,亲测将U盘挂载到sdcard2下可以实现U盘识别,但这只是一个临时解决办法,因为在同时插sdcard2和usb的情况下可能会有冲突,比如两个设备相同目录下存在同名文件的情况下只能识别一个. 要实现真正的U盘挂载需要修改

Android编程学习之异步加载图片的方法_Android

本文实例讲述了Android编程学习之异步加载图片的方法.分享给大家供大家参考,具体如下: 最近在android开发中碰到比较棘手的问题,就是加载图片内存溢出.我开发的是一个新闻应用,应用中用到大量的图片,一个界面中可能会有上百张图片.开发android应用的朋友可能或多或少碰到加载图片内存溢出问题,一般情况下,加载一张大图就会导致内存溢出,同样,加载多张图片内存溢出的概率也很高. 列一下网络上查到的一般做法: 1.使用BitmapFactory.Options对图片进行压缩 2.优化加载图片的

Android编程ProgressBar自定义样式之动画模式实现方法_Android

本文实例讲述了Android编程ProgressBar自定义样式之动画模式实现方法.分享给大家供大家参考,具体如下: 忘记在哪里看到的那位仁兄写的,就是通过用动画效果来实现的,现在顺便也把他写出来,希望那位仁兄不要见怪. 效果: 和之前的一样,在布局文件中: <ProgressBar android:id="@+id/progressBar3" android:layout_width="wrap_content" android:layout_height=

Android编程之控件可拖动的实现方法_Android

本文实例讲述了Android编程之控件可拖动的实现方法.分享给大家供大家参考,具体如下: 点击和触摸的区别是什么? 点击: 一组动作的集合 手指按下着按钮 手指要在按钮停留一段时间 手指离开按钮 private static final String TAG = "DragViewActivity"; private ImageView iv_dv_view; private TextView tv_drag_view; private int startx; private int

Android编程实现读取本地SD卡图片的方法_Android

本文实例讲述了Android编程实现读取本地SD卡图片的方法.分享给大家供大家参考,具体如下: private Bitmap getDiskBitmap(String pathString) { Bitmap bitmap = null; try { File file = new File(pathString); if(file.exists()) { bitmap = BitmapFactory.decodeFile(pathString); } } catch (Exception e)