300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Android-自定义多TAB悬浮控件实现蘑菇街首页效果

Android-自定义多TAB悬浮控件实现蘑菇街首页效果

时间:2019-08-05 17:00:24

相关推荐

Android-自定义多TAB悬浮控件实现蘑菇街首页效果

出处:/ImyFen/p/4967127.html

TAB悬浮控件实现蘑菇街首页效果

因为项目的一些需求需要用到此种展现方式. 找了市面上大部分有类似功能的应用. 基本思路嵌套ScrollView 转换事件分发给listview 实现. 但是此种方案有个缺点.

在ScrollView切换给Listview 事件的时候. 会卡顿. 体验效果并不好. 应用此方案的应用: 蘑菇街. 口袋夺宝 . 蘑菇街在快速滑动时才会卡顿. 优化处理过.

在找DEMO过程中. 发现此控件的方案更少. 仅有的几个问题颇多. 例如listview 长度不一时,切换VIewpager会造成大片空白. 需要重绘viewpager界面,

但是即使重绘了. 在Viewpager左右滑切换过程中. 会造成闪屏现象. 于是只能自己重写开始.

---------------------------下班时间到--------------回家再更新.

于是想了2种方案.

方案一: listview实现,

此方案实现相比之下较简单,不需要处理太多繁杂的地方. 但是有个致命缺点. 由于listview无法直接获取到滑动距离. 只能通过计算item高度来间接获取. 而当手势快速滑动时, 会产生惯性滑动,而惯性滑动是无法正确的

获取到滑动的高度的, 且滑动效果并不流畅. 于是此方案放弃.

方案二: scrollview 嵌套listview实现.

此Demo就采用了这种写法. 至于为什么要用Scrollview嵌套? 因为Scrollview 能准确的获得滑动的高度. 实现滑动切换非常流畅. 并且不需要重写事件分发.

就不会有了卡顿现象;

此方案并非是在整体界面中用Scrollview 嵌套所有布局. 而是在Viewpager的item里面 ScrollView嵌套listview;

难点: 整个控件的难点就在于 公共区域头部的处理. 悬浮窗反而是最简单的. (题外话: 主要目的就是为了写悬浮窗效果, 结果反而最简单. 蛋疼有木有!!!(╮(╯▽╰)╭ )

另外一个难点就在于Viewpager切换时的状态保存了. 此段比较绕. 我也是绕了好久才绕明白了.

最后: 由于是测试Demo 代码杂乱. 勿怪. 这几天将会抽取成库, 另外加上下拉刷新及加载更多功能. 希望能帮到有用的同学们把.

Demo周一附上(忘记上传网盘了.在公司电脑(。_°☆ ╲(- –)

-------------------------------------------------.11.27分割线-----------------------------------

好吧. 终于有空更新了. 目前已封装完毕 增加了下拉刷新功能; 核心方法变动较大, 由于常规的Scrollview嵌套listview 会让listview的复用消失. 于是使用交替事件实现.<br style="margin: 0px; padding: 0px;" /><br style="margin: 0px; padding: 0px;" />

核心代码

通过滑动的距离来 控制事件拦截 进行Scrollview和listview的交替执行

配合拦截

//此方法为判断是否是左右滑动 处理Viewpager事件拦截 从而不需要再自定义一个Viewpager进行事件判断

如何调用

Scrollview 所需要接收的参数:

优化了很多细节上的处理 , 此Demo 应该是最终版了. 更贴近项目~.

最后上个最后的效果图:

/s/1bn2tlIf 地址.

注: 转载注明出处. 谢谢各位!

-------------------------------------------------------------.12.1更新------------------------------

修复转交事件卡顿BUG.

标签: Android自定义控件, Android悬浮窗口

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。