zoukankan      html  css  js  c++  java
  • 【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方法中检測第二个參数

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



  • 相关阅读:
    tp5使用外部类的三种方法
    thinkphp5中php7中运行会出现No input file specified. 这个你改个东西
    21.Yii2.0框架多表关联一对多查询之性能优化--模型的使用
    20.Yii2.0框架多表关联一对多查询之hasMany
    19.Yii2.0框架模型删除记录
    18.Yii2.0框架模型修改记录 和 修改点击量
    17.Yii2.0框架模型添加记录
    15.Yii2.0框架where单表查询
    14-15.Yii2.0模型的创建/读取数据使用,框架防止sql注入
    12.Yii2.0框架视图模版继承与模版相互调用
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5211745.html
Copyright © 2011-2022 走看看