关于一个scrollView的页面拆分。

232 阅读2分钟

前段时间,遇到ux一个这样的设计。页面的内容大概是这样的。

页面种三个元素,1是标题,2是列表,3是wavesideBar。页面实现的效果,其实就是国家站点选择。

本来其实很简单。只要listview或者recyclerview和wavesideBar联动就行。

但是UX要求的要求,是整个页面一起滑动。然后列表2要实现cardView的圆角效果。

一开始看到的时候,首先想到的是外面嵌套一个ScrollView。想到,就开始行动,嵌套了之后,就出现了scrollView和listview的嵌套冲突。

有问题就继续解决。于是重写onmeasure方法。

冲突解决,列表效果完全展示。但是新的问题又来了。由于listview嵌套再scrollView之中,导致wavesideBar和listview的联动效果没了。

想了好一会,只有自己计算页面滑动的长度。而且,贼麻烦,也很难。

所以,被逼无奈,代码回退,去想新的实现方式。

然后,想到办法后,自己就被自己给整笑了。

页面元素,1,2,3。元素看上去很多,实际上并不多。

抛开上述的方法,实际上只要把页面拆开就可以了。

一个listView,一个headView,一个wavesidebar.就完美解决。

只不过,cardview实现的效果被我拆分开了。

因为2的列表是要加载整个程度。世界上第一页2和底部是没有距离的,但是最后一页,2和底部还要有着24dp的距离。这里可以在代码里设置,也可以加一个footerView.

我把listView拆分出来,第一个元素加了头部圆角,最后一个元素加了底部圆角,中间的元素,则是长方形。

我想了想,这好像是实现的最简单的办法。

如果有更好的办法的话,知道的可以留言。

之所以写这些,是记录自己开发过程中的一些“直”的想法,这个页面拆分,实际上就是简单的组装拼接。

就像是组件化一样,或者是模块化。

将整个代码的功能,按照模块化拆分,这样可以根据市场需求的不同,拆分成不同的渠道包。不同的渠道包又可以选择性的加载功能模块。

感觉写代码,看源码固然重要,但感觉重要的是自己对于这一部分的理解。