前段时间,遇到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拆分出来,第一个元素加了头部圆角,最后一个元素加了底部圆角,中间的元素,则是长方形。
我想了想,这好像是实现的最简单的办法。
如果有更好的办法的话,知道的可以留言。
之所以写这些,是记录自己开发过程中的一些“直”的想法,这个页面拆分,实际上就是简单的组装拼接。
就像是组件化一样,或者是模块化。
将整个代码的功能,按照模块化拆分,这样可以根据市场需求的不同,拆分成不同的渠道包。不同的渠道包又可以选择性的加载功能模块。
感觉写代码,看源码固然重要,但感觉重要的是自己对于这一部分的理解。