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状态。当在最后一页继续向右滑动时。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGVuZ2JvZGI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

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方法中检測第二个參数

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

【Android Tricks 6】ViewPager首页与尾页的滑动动作响应的更多相关文章

  1. datatables的Bootstrap样式的分页怎么添加首页和尾页(引)

    找到dataTables.bootstrap.js(版本3):(此项目中文件名为:dataTableExt.js) $.fn.dataTableExt.oApi.fnPagingInfo = func ...

  2. jquery.pagination.js 新增 首页 尾页 功能

    jquery.pagination.js 新增 首页 尾页 功能 废话不多说,直接上修改后的代码,修改部分已经用 update 注释包含 17-20行 99-103行 141-145行 /** * T ...

  3. Python - Django - 添加首页尾页上一页下一页

    添加首页和尾页: views.py: from django.shortcuts import render from app01 import models def book_list(reques ...

  4. Android 高仿新浪微博底部导航栏,实现双击首页Tab,页面的ListView滚动、刷新

    现在很多APP,如微信.QQ.微博等等,它们的主页面都无一例外的选择使用底部Tab导航, 通过这种方式,可以很好的把页面层级分化,很好的提高用户体验.相信,很多Android开发者,都使用到过这种经典 ...

  5. GridView自带分页 1总页数 首页 下一页 上一页 尾页 X 页 go 实现方法 .

    在前台GRIDVIEW中添加如下代码 <PagerTemplate> <table> <tr> <td style="text-align: rig ...

  6. JQuery Pagination 分页插件 增加了首页尾页以及跳转功能

    JQuery分页插件 挺好用的 但是官方是没有提供首页尾页以及跳转功能 我觉得这个功能可以有,于是就改进了一下 一个js一个css从连接里面下 链接:http://pan.baidu.com/s/1n ...

  7. android SlidingTabLayout实现ViewPager页卡滑动效果

    先来张效果图(能够滑动切换页卡) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGVuZ2t2/font/5a6L5L2T/fontsize/400/fi ...

  8. HTML静态分页(形如:首页,上一页,下一页,尾页)

    在HTML中有时候我们会用到静态分页,一次拿回一定量的数据结果条目,我们会以形如:第2页,共12页  首页 上一页 下一页 尾页 的方式进行静态分页,以下是该种静态分页的代码,供兄弟姐妹们参考. &l ...

  9. android使用ViewPager实现欢迎引导页

    android使用ViewPager实现欢迎引导页 大多数APP第一次启动的时候,都会有一个引导界面,左右滑动,到最后一张,用户点击才再次进入主界面.当第二次启动的时候,则直接进入主界面. 这种效果一 ...

随机推荐

  1. 2014第8周一JS正则小问题

    今天解决一个关于JS正则表达式的小问题,需求是匹配6位或9位数字,我原来的写法是这样的/^(/d){6}|(/d){9}$/.test(val),但测试发现输入1234567时也返回成功,很郁闷搜索了 ...

  2. 【LeetCode练习题】Add Two Numbers

    链表相加 You are given two linked lists representing two non-negative numbers. The digits are stored in ...

  3. 命名空间“System.Windows.Forms”中不存在类型或命名空间名称“DataVisualization”。是否缺少程序集引用?

    using System.Windows.Forms.DataVisualization.Charting; 编译时报警:命名空间"System.Windows.Forms"中不存 ...

  4. 【最大流之EdmondsKarp算法】【HDU1532】模板题

    题意:裸的最大流,什么是最大流,参考别的博客 运用复杂度最高的EK算法 O(M*N),模板来自紫书 #include <cstdio> #include <cstdlib> # ...

  5. .NET cookie 使用方法

    创建 C# cookie,两种方法 Response.Cookies["userName"].Value = "patrick"; Response.Cooki ...

  6. C#核编之系统数据类型和相应的C#关键字

    和任何编程语言一样,C#定义了一组用于表示局部变量.成员变量.返回值以及输入参数的基本数据类型.然而,与其他编程语言不同的是,这些关键字不只是编译器能识别的标记.C#关键字其实是System命名空间中 ...

  7. DOM事件对象

    触发DOM上的事件时会产生一个事件对象event. event的内容:与事件有关的信息,导致事件的元素,事件的类型及其他与特定事件相关的信息. event对象会传入到事件处理程序中. 一.DOM 中的 ...

  8. UVA 714 Copying Books

    题意: 要抄N本书,编号为1,2,3...N, 每本书有1<=x<=10000000页, 把这些书分配给K个抄写员,要求分配给某个抄写员的那些书的编号必须是连续的.每个抄写员的速度是相同的 ...

  9. IIS Could not load file or assembly 'CLDBCommon.DLL' or one of its dependencies.找不到指定的模块

    1.卸载原来的.NET4.0,从新下载.NET4.5.1完整安装程序.后问题解决附:.NET4.5.1下载地址:https://www.microsoft.com/zh-cn/download/det ...

  10. 01js高级_1

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...