geelaw
2021-03-15 07:37:38 +08:00
上拉加载似乎是标准功能,就是一个超长列表只有在用户快到底部时才获取靠后内容。
下拉刷新,即用户滑倒顶部继续上滑时加载新内容,是 Britcher 的发明,最先出现于他个人开发的 Twitter 客户端,现在是 Twitter 的专利(无偿授权)。
标准的结合用法可以总结如下:app 的界面是用于观察一个只能在头部追加的链表用的,用户进入 view 时获取了该链表的快照,具体来说就是头节点。
app 从头节点开始遍历,把链表的每一项从上到下放置在 view 内,由于列表很长,可以只加载几屏幕的内容,用户上拉接近底部后继续放入更后面的项,当然也可以暂时删去已经过于靠上的内容。这可以一直进行到整个链表的快照遍历完毕。
当用户回到顶端后继续下拉、明显溢出时,理解为用户想要看(原先)头节点前面的内容,由于已经过去一段时间,所以原先的头节点可能不是现在的了。下拉刷新就是获得新的头节点并展示原来头节点以前的内容。这个逻辑和刘盼到一半往回是一样的,本质上都是让用户可以在(实时更新的)链表上前后移动。
这套逻辑最原教旨的用法里,刷新后不一定非要到新头节点,如果产生了很多新内容,从原来的头慢慢往前是最连贯的做法。当然实际情况很可能是一下蹦到最新的头节点。
微博的浏览界面不是按照时间排序的,所以这个链表的逻辑不适用,微博既可以下拉加载也可以上拉加载,可以认为是不断用新内容填充 view,至于新内容填充在哪里全凭用户怎么拉。(我不确定微博是否是这样安排内容的,可能它有更复杂的逻辑。)
另一个有趣的事情是我发现 Twitter app 的内容其实很短,可以很容易拉到底部(它不再加载更早的内容),也可以做到拉到顶部刷新后没有什么新内容。另外 Twitter 似乎也不全是按照时间排序的。