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


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

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



  • 相关阅读:
    解决PowerDesigner中DBMS设置的问题-创建物理模型时DBMS选项为空
    转载 缓存技术Redis在C#中的使用及Redis的封装
    T4模版 mysql
    T4 模版应用类
    在点击run之后,没有显示任何设备,这一般是adb的问题,解决方法是重新启动adb
    webapi 返回不同格式的数据
    使用elk+redis搭建nginx日志分析平台
    [C#]使用WebClient上传文件并同时Post表单数据字段到服务端
    关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案
    2019.12.09-新闻列表布局代码
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5211745.html
Copyright © 2020-2023  润新知