全国免费咨询:

13245491521

VR图标白色 VR图标黑色
X

中高端软件定制开发服务商

与我们取得联系

13245491521     13245491521

2023-10-13_快速实现抖音上下滑动,万能ViewPager2适配器--SmartViewPager2Adapter

您的位置:首页 >> 新闻 >> 行业资讯

快速实现抖音上下滑动,万能ViewPager2适配器--SmartViewPager2Adapter 点击关注公众号,回复”福利”即可参与文末抽奖 万能ViewPager2适配器--SmartViewPager2Adapter一、特点功能 完全脱离xml,所有效果只需要通过api调用 具体功能: 1. 两句代码实现抖音列表效果 2. 无感且丝滑,动态从头部或者底部加载数据 3. 设置上下加载监听,再达到预加载limit的时候触发监听 4. 实现数据源接口,和Fragment接口,你会体验到什么是丝滑 5. 画廊的实现,不再需要在xml设置clipChildren属性,调用即可实现。 6. 极限脱离xml控制,以简化使用者使用 二、SmartViewPager2Adapter动态 SmartViewPager2Adapter2.0.2更新内容温馨提示:目前已经升级到2.0版本,增加了无线循环和自动滚动。建议大家github,star下。文档很详细,之后不会在博客上更新维护文档:点击查2.0效果展示 三、Demo 为录制流畅,截图分辨率比较模糊。可在下方扫描二维码下载apk QRCode_336.png四、实战效果 这是我项目里的实战效果,里面放置了多type的fragment实现 GIF 2023-9-20 11-33-53.gif五、效果展示 为录制流畅,截图分辨率模糊。可下载apk查看真机效果 基础功能展示几句代码实现抖音列表向上或向下加载数据设置加载监听 画廊功能展示asGallery一句代码搞定3d画廊 version2.0 跳转至此文档无线循环模式自动滚动模式 六、添加依赖 项目build.gradle添加如下allprojects{ repositories{ maven{url'https://jitpack.io'} } } app build.gradle添加如下dependencies{ implementation'com.github.lihangleo2:SmartViewPager2Adapter:1.0.2' } 七、基本使用 7.1 两句代码实现抖音效果使用此库,你只需在xml加上简单的viewPager2即可,其他只需调用方法即可 7.1.1 步骤一:初始化adapter privatevalmAdapterbylazy{ SmartViewPager2Adapter(this,mBinding.viewPager2) .cancleOverScrollMode() .setOffscreenPageLimit(5) .setPreLoadLimit(3) .addFragment(1,ImageFragment::class.java) .addFragment(2,TextFragment::class.java) //可以在这里初始化数据 .addData(list) } 7.1.2 步骤二:设置给viewpager2(做完这下就搞定了,你没看错)mBinding.viewPager2.adapter = mAdapter 7.1.3 步骤三:list数据源(注意点);bean对象要实现接口:SmartFragmentTypeExEntity解析数据bean要实现SmartFragmentTypeExEntity接口,返回你在adapter里要生成的fragment的type。(也就是说type==1时生成图片fragment,这些逻辑adapter帮你操作了) publicclassSourceBeanimplementsSmartFragmentTypeExEntity{ inttype; @Override publicintgetFragmentType(){ returntype; } } 7.1.4 步骤四:fragment(注意点)可以看到方法.addFragment(type, Fragment.class),这里结合步骤三就很清楚了。比如上面的基础使用里调用了.addFragment(1, ImageFragment::class.java)。最后又调用了.addData(list),这样adapter会自动帮你找到对应的tyep,然后生成你要的页面。注意你的fragment必须实现SmartFragmentImpl接口,这个接口是让adapter把数据回传给你,以便你做页面操作 publicclassImageFragmentextendsFragmentimplementsSmartFragmentImpl{ //....伪代码 @Override publicvoidinitSmartFragmentData(SmartFragmentTypeExEntitybean){ this.mSourceBean=beanasSourceBean } } 7.2 画廊效果画廊只需要加上如下代码,无需在xml里写clipChildren="false"这些代码,解放xml //如果是横向就是左右,竖直的话就是上下。adapter会自己判断 .asGallery(int leftMargin,int rightMargin) //想要加上滑动效果只需要加上(后续会加上更多效果) setPagerTransformer(SmartTransformer.TRANSFORMER_ALPHA_SCALE) 7.3 方法详解这里我会把重要的方法拿出来讲,其他的会出个表格 7.3.1 数据加载向下无感加载数据 .addData(Listlist) 向上无感加载数据 .addFrontData(Listlist) 加载对应type的fragment.class .addFragment(type, Fragment.class) 7.3.2 设置监听设置头部加载监听(不设置则不触发) .setOnRefreshListener(OnRefreshListener listener) 设置底部加载监听(不设置则不触发) .setLoadMoreListener(OnLoadMoreListener listener) 同时设置头部和底部监听(不设置则不触发) .setOnRefreshLoadMoreListener(OnRefreshLoadMoreListener listener) 7.3.3 结束监听头部已经不能翻页时,调用。将不再触发头部监听。.finishRefreshWithNoMoreData() 底部已经不能翻页时,调用。将不再触发底部监听。.finishLoadMoreWithNoMoreData() 7.3.4 ViewPager2滑动效果SmartTransformer.TRANSFORMER_3D 3d滑动效果SmartTransformer.TRANSFORMER_ALPHA_SCALE 缩放透明度效果 .setPagerTransformer(SmartTransformer enum)其他方法 nameformatdescription.getDataList()ListSmartFragmentTypeExEntity返回数据源.addDefaultFragment()SmartFragmentImpl找不到对应type的默认fragmentcancleOverScrollMode()void取消viewpager2边缘阴影setVertical()boolean是否设置竖直viewpager2,默认横向setOffscreenPageLimit()integer设置预加载数量setPreLoadLimit()integer设置滑动到limit触发预加载监听 八、github传送门 SmartViewPager2Adapter 九、其他作品 万能阴影布局 点击小卡片,参与粉丝专属福利!!如果文章对你有帮助的话欢迎「关注+点赞+收藏」 阅读原文

上一篇:2017-11-03_TOPYS招聘 | 来这个空间——搞点事? 下一篇:2024-05-11_「转」滴滴青桔 ! 2024金瞳奖未来力量品牌命题发布

TAG标签:

19
网站开发网络凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设网站改版域名注册主机空间手机网站建设网站备案等方面的需求...
请立即点击咨询我们或拨打咨询热线:13245491521 13245491521 ,我们会详细为你一一解答你心中的疑难。
项目经理在线

相关阅读 更多>>

猜您喜欢更多>>

我们已经准备好了,你呢?
2022我们与您携手共赢,为您的企业营销保驾护航!

不达标就退款

高性价比建站

免费网站代备案

1对1原创设计服务

7×24小时售后支持

 

全国免费咨询:

13245491521

业务咨询:13245491521 / 13245491521

节假值班:13245491521()

联系地址:

Copyright © 2019-2025      ICP备案:沪ICP备19027192号-6 法律顾问:律师XXX支持

在线
客服

技术在线服务时间:9:00-20:00

在网站开发,您对接的直接是技术员,而非客服传话!

电话
咨询

13245491521
7*24小时客服热线

13245491521
项目经理手机

微信
咨询

加微信获取报价