Closed dd-fantasy closed 5 years ago
板块排序不就没有意义了。
有人(我)会懒得排序。这个默认是关闭的,想要手动排序的不受影响的。
如果启用了自动排序的话,就把手动排序入口隐藏了吧,或者改成能手动置顶的。
目前还是先隐藏手动排序入口吧。 置顶的方法我再想想。
开启自动排序时,允许用户进入版块排序界面,选择最多一个版块置顶,保证启动程序时进入固定板块。 此时的版块排序界面中,置顶的版块会保持在最上面,其余版块依照 frequency 排序。用星星符号代替原来的排序 handle。同时只有一个版块能被置顶,所以同时只有一个星星被点亮。 星星符号是 Google 在 APL 2.0 下开源的。 实现上,限定 frequency 在 [0, 2^15) 的范围内,将第 16 位设置为置顶 flag。因此置顶版块的 frequency 必将大于其余版块,依照 frequency 排序时会自然地排在第一。
顺带修了排序 handle 在暗色模式下颜色不对的小问题。
疑问
多个置顶我也细想过了。如果要做多个置顶,最大问题就是这多个置顶如何排序。
所以这两种(算上我这个仅选一个置顶就是三种)方法效果都不算最好,毕竟众口难调。另外我觉得,这两种方法都会把排序系统弄得复杂,而自动排序主要是面向不想动手管理版块顺序的用户,引入过多手动操作可能未必满足他们的需要。
我的三种方案列在上面了,看你觉得哪种好吧。
其他都可以有。 默认版块没有 +1 是考虑不当。 开关放在版块管理界面的话,那就把设置里的去掉吧。 话说我觉得现在选项多起来了有点混乱,河马你看是不是分个组?
还是就置顶一个板块。
选项是指设置选项吗?目前先不改。
给星星加了引导教程。
往排序界面引入开关遇到了一些麻烦。使用 PreferenceFragment 的话似乎有 support 库版本的问题。把 SortForumsActivity 的 class 换成安卓自己的设置界面的话,通过 ToolbarActivityHelper 建立 layout 就会不兼容。 还是自己写个 View 吧,模仿设置里的样子。
你想怎么加开关?为什么还要 PreferenceFragment ?
和设置界面一样的开关? 设置界面是 PreferenceActivity 的子类,开关的 UI 和回调是自动生成的吧。
用 SwitchCompat 就行了。
把自动排序选项搬到了板块排序界面。新的 UI:
为什么需要重启?
开关的位置感觉有点怪,能不能把开关就放到列表第一行,要改一下 onGetItemDraggableRange() 和 onCheckCanStartDrag() 。
是说像 RightDrawer 里面的常用串一样一起放在列表里?
是的,放在最上面。
所有根据 position 从 mLazyList 取东西的地方要改成 position - 1。
追加 AutoSortingSwitchHolder extends RecyclerView.ViewHolder
来放开关,把 Adapter 的基类改成RecyclerView.Adapter<RecyclerView.ViewHolder>
。
感觉实现不够优雅(),河马觉得这样可以吗。 另外,现在的 UI:
能不能弄成这样?让眼睛图标和开关对齐,文字也对齐。
等一等,我犯傻了,这个实现太丑了,应该还有别的方法。让我试试看。
多谢
根据访问频率对版块自动排序。
值得商榷的地方
另祝新年好。