ViewPager的页面的加载和移除_html/css_WEB-ITnose

php中文网
发布: 2016-06-24 11:47:42
原创
1566人浏览过

今天在做轮播图片广告的时候用到了viewpager,对它滑动时页面的加载和移除探究了下。

立即学习前端免费学习笔记(深入)”;

在PagerAdapter中存在destroyItem方法和instantiateItem方法,前者用于移除页面,后者用于加载页面。


【注意】 如果当前页面是0号页面,那么程序将不会调用instantiateItem方法;同样,如果当前页面时views.size()(ViewPager中加载的view的数量) - 1,也将不会调用instantiateItem方法 。


可以写个简单的ViewPager demo(例如导航页)进行观察,用Logcat打印信息。

(如果你还不会写导航页,请阅读ViewPager实现导航页)

立即学习前端免费学习笔记(深入)”;

在destroyItem方法中输出的信息:

Log.d("MainActivity", "移除页面 " + position);

在instantiateItem方法输出的信息:

Log.d("MainActivity", "加载页面 " + position);

在onPageSelected输出的信息:

Log.d("MainActivity", "当前选择页面 " + arg0);


那么我把导航页从左滑动到右,从右滑动到左(注意:一共有5页):

信息打印:

03-22 15:22:45.713: D/MainActivity(4835): 加载页面 003-22 15:22:45.713: D/MainActivity(4835): 加载页面 103-22 15:22:48.768: D/MainActivity(4835): 当前选择页面 103-22 15:22:49.408: D/MainActivity(4835): 加载页面 203-22 15:22:51.558: D/MainActivity(4835): 当前选择页面 203-22 15:22:52.198: D/MainActivity(4835): 移除页面 003-22 15:22:52.203: D/MainActivity(4835): 加载页面 303-22 15:22:53.988: D/MainActivity(4835): 当前选择页面 303-22 15:22:54.508: D/MainActivity(4835): 移除页面 103-22 15:22:54.508: D/MainActivity(4835): 加载页面 403-22 15:22:55.578: D/MainActivity(4835): 当前选择页面 403-22 15:22:55.928: D/MainActivity(4835): 移除页面 203-22 15:22:58.958: D/MainActivity(4835): 当前选择页面 303-22 15:22:59.503: D/MainActivity(4835): 加载页面 203-22 15:23:01.288: D/MainActivity(4835): 当前选择页面 203-22 15:23:01.928: D/MainActivity(4835): 加载页面 103-22 15:23:01.928: D/MainActivity(4835): 移除页面 403-22 15:23:02.613: D/MainActivity(4835): 当前选择页面 103-22 15:23:03.243: D/MainActivity(4835): 加载页面 003-22 15:23:03.248: D/MainActivity(4835): 移除页面 303-22 15:23:05.138: D/MainActivity(4835): 当前选择页面 003-22 15:23:05.773: D/MainActivity(4835): 移除页面 2
登录后复制

  • 进入程序时


  • 进入程序时,显示加载了要展示的0号页面,然后预加载了1号页面,两次调用了instantiateItem方法。


    刚进入自然要调用两次,首先要加载自己的那张图片,然后还要加载下一张图片。

  • 滑动到1号页面

  • 这个时候当然是预加载2号页面。


  • 滑动到2号页面

  • 移除0号页面,加载3号页面


  • 滑动到3号页面

  • 移除1号页面,加载4号页面


  • 滑动到4号页面

  • 移除2号页面,不进行预加载了,因为已经到尽头了。


    正向拨动完成。

    到了这里,大概的规律我们也能看的出来了,

    每次滑动都是保留当前页面相邻的两个页面(预加载没有加载的页面,保存已经加载的页面),移除不相邻的但已经加载的那个页面,也就是说每次只有三个页面存在。

    反向拨动也是这个道理,反向拨动的示意图就不用画了,这里大家都应该很明白了。

    知道了这个滑动的特性之后,我们可以更加灵活地运用ViewPager。

    好了,今天先讲了这里, 如果有什么不对的地方,欢迎批评指正!



    立即学习前端免费学习笔记(深入)”;

    HTML速学教程(入门课程)
    HTML速学教程(入门课程)

    HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

    下载
    来源:php中文网
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
    最新问题
    开源免费商场系统广告
    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送
    PHP中文网APP
    随时随地碎片化学习
    PHP中文网抖音号
    发现有趣的

    Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号