[发明专利]一种加快安卓列表显示速度的方法有效
申请号: | 202011171678.8 | 申请日: | 2020-10-28 |
公开(公告)号: | CN112272329B | 公开(公告)日: | 2023-02-28 |
发明(设计)人: | 王琦;魏代邦;张晓刚 | 申请(专利权)人: | 海看网络科技(山东)股份有限公司 |
主分类号: | H04N21/431 | 分类号: | H04N21/431;H04N21/472;H04N21/81;H04N21/485 |
代理公司: | 济南华典专利代理事务所(普通合伙企业) 37293 | 代理人: | 李景华 |
地址: | 250000 山东省济南*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 加快 列表 显示 速度 方法 | ||
1.一种IPTV应用中加快Android列表显示速度的方法,其特征在于:包括:
列表的布局采用GridLayoutManager布局管理器,初始焦点落在第一个元素上;
通过自定义列表类BaseRecyclerView,修改焦点移动时的处理逻辑,所述处理逻辑为,当焦点发生移动时,通过偏移量算法获得滚动的偏移量,并立即触发滚动,通过自定义列表类BaseRecyclerView处理滚动的方法,使得在每次焦点移动完成后,下一次焦点移动后可能获取焦点的元素,已出现在可视区域之内,并结合Glide的处理方式,在长按键的按下时暂停元素的加载,抬起时继续元素的加载,具体过程为:
通过重写focusSearch方法,可以监听焦点移动事件,并获得下一个焦点元素;
通过重写scrollBy和smonthScrollBy方法,阻断焦点移动引起的默认滚动逻辑,其方法为,同时为BaseRecyclerView声明一个布尔类型的状态变量isLongPress,用于记录是否处于长按状态,通过Android的按键监听方法,可以得知当前是否处于长按状态,如果当前是一次长按事件,即isLongPress为true,则调用RecyclerView的scrollBy方法,执行非平滑滚动;如果不是一次长按事件,即isLongPress为false,则调用RecyclerView的smoonthScrollBy方法,执行平滑滚动,通过调用不同的方式,保证在长按时滚动的不卡顿,以及在单次按键时滚动的流畅性;
当焦点发生移动时,下一个焦点元素已处于可视区域,通过偏移量算法获得滚动的偏移量;
通过调用RecyclerView的smoonthScrollBy平滑滚动方法,实现滚动偏移量;
为BaseRecyclerView添加OnScrollListener滚动监听器,以监听列表的滚动状态;
Glide的处理方式为,当列表处于滚动状态时,调用Glide的暂停加载方法,暂停加载所有元素;首先将长按键状态变量isLongPress设置为false,即当列表滚动停止时,一次长按键必然已结束,同时通过Glide的方法恢复元素加载,为自定义列表类BaseRecyclerView在当前可视区域内的列表项,加载元素;
当根据计算的偏移量进行滚动时,如果当前处于长按状态,则调用scrollBy而非smoonthScrollBy,以获得更流畅的滑动效果。
2.根据权利要1所述的一种IPTV应用中加快Android列表显示速度的方法,其特征在于:所述自定义列表类BaseRecyclerView继承RecyclerView,列表的布局采用GridLayoutManager布局管理器,初始焦点落在第一个元素上。
3.根据权利要1所述的一种IPTV应用中加快Android列表显示速度的方法,其特征在于:所述列表的布局的第一个元素距离列表的左边的距离称为fitX,列表的第一个元素距离列表的上边的距离称为fitY,fitX和fitY初始化时的值为负一,列表的任一元素,距离左边的距离称为left,距离上边的距离称为top。
4.根据权利要3所述的一种IPTV应用中加快Android列表显示速度的方法,其特征在于:所述偏移量算法包括:
自定义列表类BaseRecyclerView的元素获取焦点;
从当前列表中获取第一个可见元素;
判断fitX和fitY是否都小于零,如果小于零,说明列表第一次获取焦点,该情况下列表的第一个元素会获取焦点,列表不需要发生滚动;根据列表的第一个可见元素,计算fitX和fitY的值,该步骤只会在列表首次获取焦点时执行一次,之后fitX或fitY都会大于等于零,执行完步骤后结束该算法;
当fitX和fitY至少有一个大于等于零时,需要计算列表的滚动距离,判断列表使用纵向还是横向布局,每种布局的滚动方向不同,计算对应滚动距离后,调用滚动方法。
5.根据权利要4所述的一种IPTV应用中加快Android列表显示速度的方法,其特征在于:当使用纵向布局时,比较焦点元素与列表上边的距离top,与fitY是否相等,如果相等说明焦点元素位于列表的第一行,不需要滚动,结束该算法;如果二者不相等,说明焦点元素不在列表的第一行,需要计算纵向滚动距离y:y=top–fitY;调用滚动方法,滚动的值为横向距离为0,纵向距离为y;
当使用横向布局时,比较焦点元素与列表左边的距离left,与fitX是否相等,如果相等说明焦点元素位于列表的第一列,不需要滚动,结束该算法;如果二者不相等,说明焦点元素不在列表的第一列,需要计算横向滚动距离x:x = left–fitX;同样调用滚动方法,滚动的值为横向距离为x,纵向距离为0。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于海看网络科技(山东)股份有限公司,未经海看网络科技(山东)股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011171678.8/1.html,转载请声明来源钻瓜专利网。
- 上一篇:DBC基板分板方法
- 下一篇:一种单面铝复合纸盖板及其制备方法