【Android Tricks 6】ViewPager首页与尾页的滑动动作响应
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首页与尾页的滑动动作响应的更多相关文章
- datatables的Bootstrap样式的分页怎么添加首页和尾页(引)
找到dataTables.bootstrap.js(版本3):(此项目中文件名为:dataTableExt.js) $.fn.dataTableExt.oApi.fnPagingInfo = func ...
- jquery.pagination.js 新增 首页 尾页 功能
jquery.pagination.js 新增 首页 尾页 功能 废话不多说,直接上修改后的代码,修改部分已经用 update 注释包含 17-20行 99-103行 141-145行 /** * T ...
- Python - Django - 添加首页尾页上一页下一页
添加首页和尾页: views.py: from django.shortcuts import render from app01 import models def book_list(reques ...
- Android 高仿新浪微博底部导航栏,实现双击首页Tab,页面的ListView滚动、刷新
现在很多APP,如微信.QQ.微博等等,它们的主页面都无一例外的选择使用底部Tab导航, 通过这种方式,可以很好的把页面层级分化,很好的提高用户体验.相信,很多Android开发者,都使用到过这种经典 ...
- GridView自带分页 1总页数 首页 下一页 上一页 尾页 X 页 go 实现方法 .
在前台GRIDVIEW中添加如下代码 <PagerTemplate> <table> <tr> <td style="text-align: rig ...
- JQuery Pagination 分页插件 增加了首页尾页以及跳转功能
JQuery分页插件 挺好用的 但是官方是没有提供首页尾页以及跳转功能 我觉得这个功能可以有,于是就改进了一下 一个js一个css从连接里面下 链接:http://pan.baidu.com/s/1n ...
- android SlidingTabLayout实现ViewPager页卡滑动效果
先来张效果图(能够滑动切换页卡) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcGVuZ2t2/font/5a6L5L2T/fontsize/400/fi ...
- HTML静态分页(形如:首页,上一页,下一页,尾页)
在HTML中有时候我们会用到静态分页,一次拿回一定量的数据结果条目,我们会以形如:第2页,共12页 首页 上一页 下一页 尾页 的方式进行静态分页,以下是该种静态分页的代码,供兄弟姐妹们参考. &l ...
- android使用ViewPager实现欢迎引导页
android使用ViewPager实现欢迎引导页 大多数APP第一次启动的时候,都会有一个引导界面,左右滑动,到最后一张,用户点击才再次进入主界面.当第二次启动的时候,则直接进入主界面. 这种效果一 ...
随机推荐
- Web常用函数介绍(LoadRunner相关)
介绍大纲:1. web_url2. web_image3. web_link4. web_submmit_form 详细介绍: 一. web_url web_url 语法: Int Web_url(c ...
- 【UVA 10307 Killing Aliens in Borg Maze】最小生成树, kruscal, bfs
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=20846 POJ 3026是同样的题,但是内存要求比较严格,并是没有 ...
- PHP内核学习(一)SAPI
学习PHP-src之前,我准备了一份源文件: GitHub下载->https://github.com/helingfeng/php-src 简单分析一下源码的目录结构: 1. root根目录下 ...
- rand,randn,randi函数区别
1,rand 生成均匀分布的伪随机数.分布在(0~1)之间 主要语法:rand(m,n)生成m行n列的均匀分布的伪随机数 rand(m,n,'double')生成指定精度的 ...
- AJAX提交到Handler.ashx一般处理程序返回json数据 (字符串拼接方式)
<%@ WebHandler Language="C#" Class="Handler" %> using System; using System ...
- ToString()使用方法
1.数字转换到字符串格式说明符说明示例输出C货币2.5.ToString("C")¥2.50D十进制数25.ToString("D5")00025E科学型250 ...
- ORACLE AUTOMATIC STORAGE MANAGEMENT翻译-第二章 ASM instance(1)
第二章 ASM INSTANCE ASM的类型,例如可以: 10g后ORACLE instance 类型增加了一个ASM种类.参数INSTANCE_TYPE=ASM进行设置. ASM实例启动命令: ...
- 【floyed】【HDU1217】【Arbitrage】
题目大意: 给你几种货币,以及几种汇率关系,问是否存在套利的可能? 思路: 初步想法:图上存在一个环的路径上权值相乘大于1.... 再者:该如何找到图上所有环呢.... 好吧 经过鸟神 和 况神的指点 ...
- 在一个apk中调用另外一个apk中的activity
今天忽然想到如果要在一个activity中调用另外一个activity该怎么办呢? 感觉这个应该比较简单,应为activity的启动方式就两种:显式启动.隐式启动: 显式启动的话肯定不行,那就只能使用 ...
- ArrayList、Vactor以及LinkList的区别
ArrayList:底层数据结构是数组结构,你就可以把它看成是一个可变大小的且只能装对象的数组.因为数组有索引(角标)所以ArrayList的查询速度快,而添加删除元素速度稍慢.因为,你每删除或者添加 ...