博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Android Tricks 6】ViewPager首页与尾页的滑动动作响应
阅读量:6337 次
发布时间:2019-06-22

本文共 1799 字,大约阅读时间需要 5 分钟。

  ViewPager能够说是Android应用中使用比較广发的一个组件了。它能够帮助我们非常

方便地实现滑动更换View的效果。刚好近期搞的一个项目有一个需求用到了这个,同

时是要能在首页和尾页滑动时可以进行响应,而不是像默认的那样没有不论什么动作,所

以略微研究了下,希望能够对大家有所帮助。

  在分析了需求之后。发现这个应该是和ViewPager的换页监听有联系,于是做了个小

demo。通过实验来寻找问题的解决方式。

  首先贴出换页监听器的几个public方法以及第一个方法中state数字代表的含义,例如以下

图所看到的。

这里我们重点关注前两个方法,它们和scroll动作相关。详细实验代码例如以下:

private  OnPageChangeListener pageChangeListener = new OnPageChangeListener() {		@Override		public void onPageSelected(int arg0) {			// TODO Auto-generated method stub		}		@Override		public void onPageScrolled(int arg0, float arg1, int arg2) {			// TODO Auto-generated method stub			Log.d("TestActivity", arg0+","+arg1+","+arg2);		}		@Override		public void onPageScrollStateChanged(int arg0) {			// TODO Auto-generated method stub			Log.d("TestActivity", arg0+"");		}	};

当在首页往左滑动时,log信息如右:。能够发现以以1开头,以0结尾

(数字的含义请參看上面所给图中关于state的解释);当在中间页向右滑动时,log信息

例如以下所看到的,此时从1经历了2的状态。最后到了0状态。当在最后一页继续向右滑动时

log信息如右:,和情况1类似。状态从1变到了0,可是第二行是以2开

头的,而情况1是以0开头的(測试用例一共是3页。也就是说第二行开头数字代表的

是该页的编号),实验到此就结束了。

  综上可得,假设要在首页往左滑动时响应动作能够例如以下写,同理假设要想在最后一

private  OnPageChangeListener pageChangeListener = new OnPageChangeListener() {		@Override		public void onPageSelected(int arg0) {			// TODO Auto-generated method stub		}		@Override		public void onPageScrolled(int arg0, float arg1, int arg2) {			// TODO Auto-generated method stub			//Log.d("TestActivity", arg0+","+arg1+","+arg2);			curPage = arg0;		}		@Override		public void onPageScrollStateChanged(int arg0) {			// TODO Auto-generated method stub			//Log.d("TestActivity", arg0+"");			if (preState == 1 && arg0 == 0 && curPage == 0) {				your action...			}			preState = arg0;		}	};

页往右滑动时响应动作,仅仅要将推断第三个方法中推断条件中的"curPage == 0"改为

"curPage == view size - 1"就可以。

  在这个实验中我们仅仅使用了部分数据,其它数据事实上也是非常实用的,比方你要想

实现滑动到页面的一半时响应动作,就能够在onPageScrolled方法中检測第二个參数

的变化等等。所以动动手。能够学会的东西还是挺多的。

你可能感兴趣的文章
每天学点GDB14
查看>>
Git删除远程分支
查看>>
嵌入式Linux开发工程师入门知识
查看>>
用户不在sudoers 文件中。此事将被报告 or (usermod:“sudo”组不存在)
查看>>
windows 安装ruby on rails
查看>>
JsonObjectToString
查看>>
Poj3250--Bad Hair Day(栈)
查看>>
杭电3788--ZOJ问题
查看>>
工作用linux命令汇总
查看>>
web前端开发中Nodejs、Grunt、npm等的介绍、使用
查看>>
Queue 输出数据
查看>>
JQuery直接调用asp.net后台WebMethod方法
查看>>
Go标准容器之List
查看>>
SVN标准命令
查看>>
CRUD全栈式编程架构之MVC的扩展设计
查看>>
java Design Patterns
查看>>
CentOS7 初始化配置
查看>>
【leetcode】61. Rotate List
查看>>
重入锁的理解
查看>>
mysql首次使用过程以及彻底卸载过程
查看>>