• 学习了,谢谢分享。

  • #3楼 @chowaikong 是的,在项目中有说明,不过我写的这一份还有很多问题,后期需要重构一下。

  • 这个查看置顶功能黑科技啊,直接解析网页数据, ( ・ิω・ิ) 厉害了,我的哥。

  • 关于 RecyclerView 外面包裹 NestedScrollView 问题。

    在一开始的时候为了省事使用了这种方案,其实这种方案是存在缺点的,不适合内容过多的情况下添加或者删除内容,否则UI会卡顿,这也是有小伙伴反馈,我测试后才发现的。
    我猜测 RecyclerView 有自己的优化布局方案,在默认的情况下,如果数据更新了,只对显示部分重新测量即可,其余部分可以在滚动时在测量加载,但是,如果外面包裹了 NestedScrollView 时,添加或删除数据则需要对 RecyclerView 中所有内容都重新测量,以获取 RecyclerView 的真实高度。
    当数据不多时,重新测量一次耗费的时间很多,不容易察觉,但是当数据有很多时,重新测量一次就需要耗费很长的时间,很容易引起 ANR 异常。

    所以在新版本中移除了 NestedScrollView 的嵌套,并使用了 HeaderFooterAdapter 来为底部添加状态条。

  • Chrome Custom Tabs 非常不错,以前都没有注意到。d(^_^o)

  • #11楼 @albertlushuwei 随便写,手机应用用不到这个地址,实在不知道写什么,写 diycode 网址也行。

  • #18楼 @chowaikong 主要是为了添加一些不适合放在 RecyclerView 的内容。
    例如 topic 详情页,上面是一个 WebView,如果使用 RecyclerView 使用 multiType,作为第一个条目也是可以的,但是呢当它滑动过去后会被销毁,而 WebView 销毁和重建是非常耗时的,滑动到底部再滑动回来会闪一下。包括底部的 Footer 状态显示,个人觉得只为了添加一个 Footer 使用 MultiType 太不划算了。

    如果不进行设置的话,的确会因为滑动冲突会造成比较明显的卡顿,但是如果把 RecyclerView 的滑动直接交给 NestedScrollView 处理,对滑动效果影响并不大。

    另外一个好处就是可以更方便的保存状态,如果将滚动直接交给 RecyclerView 处理,那么记录 RecyclerView 状态的时候需要记录两个数值,一个是条目,另一个是条目距离顶部的距离。交给 NestedScrollView 后只用记录 NestedScrollView 的滚动位置就行了。

  • #11楼 @plusend 借鉴了不少你写的内容。(⊙ω⊙)

  • #12楼 @mrko0630 有的 612310796(魔法师协会)

  • 第一个稳定版发布