关于原本底部过滤栏的样式,其实之前用的就是 Material You 的官方底部导航栏组件,后来我又想了一下,认为导航栏风格表达的示意是页面的切换,而 Reeder 风格表达的示意是筛选,所以这也是我想保留 Reeder 风格底栏的一点。我是想将 Reeder 风格的底栏改得更契合 Material You一些的,最后就是动画、取色、点击判定也没弄好😭。其次很多出现在宣传上的 Material You 组件,官方其实是还没有提供 Compose 版本的(画大饼,包括 Google 官方应用,也不是完全适配 Material You 风格的),所以我只能依照官方设计文档来自己实现或者偷 kyant0 的😂。那么现在我将优先着手在必需的功能点开发上,这些细枝末节后面再调整(提供多种样式选择?),因为越到 Android 13,Google 官方公布的 Material You 设计就越成熟(越好抄🤪。
#Update
更新日志:
1. 优化同步速度。
2. 订阅源页面尝试新的数据拉取逻辑(实验性)。
3. 底部过滤栏尝试新的外观(对比感受一下)。
4. 添加订阅源时粘贴按钮现在可用。
5. 现在可以长按订阅源对其修改(临时外观)。
6. 阅读页面部分样式适配 Material You 风格和 Google Sans 字体。
7. 为部分场景切换添加淡出淡出动画(减少突兀感)。
8. 修复点击通知消息后不能正确跳转到文章页面的 BUG。
下个版本:
1. 长按分组对其修改。
2. 一键全部已读功能。
3. 点击文章后自动标记为已读(这将是默认)。
4. 文章搜索功能。
更新日志:
1. 优化同步速度。
2. 订阅源页面尝试新的数据拉取逻辑(实验性)。
3. 底部过滤栏尝试新的外观(对比感受一下)。
4. 添加订阅源时粘贴按钮现在可用。
5. 现在可以长按订阅源对其修改(临时外观)。
6. 阅读页面部分样式适配 Material You 风格和 Google Sans 字体。
7. 为部分场景切换添加淡出淡出动画(减少突兀感)。
8. 修复点击通知消息后不能正确跳转到文章页面的 BUG。
下个版本:
1. 长按分组对其修改。
2. 一键全部已读功能。
3. 点击文章后自动标记为已读(这将是默认)。
4. 文章搜索功能。
#Update
更新日志:
1. 修复点击通知后,当界面重组时(屏幕旋转、切换模式)会重复打开文章的 BUG。
2. 为文章列表页面添加 Lottie 缺省插画。
3. 修复由 RSS 源中的发布日期未使用规范格式所引起的同步错误(例如“人民日报 RSS”)。
4. 现在同步新文章时,其标题中的 HTML 字符会被正确转义(例如“澎湃新闻 RSS”)。
5. 现在点击文章后会自动标记为已读(由于目前文章列表是即时刷新的,标记为已读后会导致未读列表的项目位置发生改变,临时留存功能未实现,浏览效果可能会有点奇怪)。
6. 统一 Banner 的色调级别(主要体现在深色模式下)。
7. 添加 “全部标记为已读” 功能所需的 UI。
8. 修复导入 OPML 文件时,其 RSS 源项目未分组所引起的错误(现在如果该文件中的 RSS 源未指定分组,则会导入到默认分组)。
9. 现在阅读文章时,当向下滑动会扩展到全屏(为此,底栏被分离到各自页面中)。
说明:
1. 这是一份补充版本,主要用于修复当前紧急的 BUG 和铺垫后面的功能更新。
2. 数据库结构即将发生改变,届时需要卸载后重新安装(到时会提前提醒,下版可以导出 OPML 文件)。
3. 关于色彩:如果你现在使用的是 Android 12+,那么 Read You 的色彩是根据手机壁纸的颜色动态调整的(莫奈色系)。如果你是 Android 12 以下的系统,使用的是我固定预设好的色彩(也就是蓝色调),后面设置页面那边出来后,我再允许自定义色值。
4. WebView 全文解析的编码默认是 UTF-8,如果你访问的文章原页面中使用了其他的编码(例如“人民网 RSS” 是 GBK 编码),当全文解析时会显示乱码。同上条,将在设置页面中给予手动指定编码。
5. 网页可读性解析插件使用的是与 Mozilla Firefox 浏览器一致的 Readability4J,原文中的某些元素(例如无关元素、广告、内嵌视频)可能会被过滤,后面我再看能不能自定义忽略某些过滤规则。
6. 上面两条问题的临时解决办法:与 Reeder 的交互逻辑一样,可以点击文章标题跳转到原网页。
7. 判断 RSS 源是否已订阅的依据是 URL 是否一致,你可以通过不同的 URL 开头(如“http”或“https”)来订阅两个内容一样的 RSS 源,这可以用于一些测试。
更新日志:
1. 修复点击通知后,当界面重组时(屏幕旋转、切换模式)会重复打开文章的 BUG。
2. 为文章列表页面添加 Lottie 缺省插画。
3. 修复由 RSS 源中的发布日期未使用规范格式所引起的同步错误(例如“人民日报 RSS”)。
4. 现在同步新文章时,其标题中的 HTML 字符会被正确转义(例如“澎湃新闻 RSS”)。
5. 现在点击文章后会自动标记为已读(由于目前文章列表是即时刷新的,标记为已读后会导致未读列表的项目位置发生改变,临时留存功能未实现,浏览效果可能会有点奇怪)。
6. 统一 Banner 的色调级别(主要体现在深色模式下)。
7. 添加 “全部标记为已读” 功能所需的 UI。
8. 修复导入 OPML 文件时,其 RSS 源项目未分组所引起的错误(现在如果该文件中的 RSS 源未指定分组,则会导入到默认分组)。
9. 现在阅读文章时,当向下滑动会扩展到全屏(为此,底栏被分离到各自页面中)。
说明:
1. 这是一份补充版本,主要用于修复当前紧急的 BUG 和铺垫后面的功能更新。
2. 数据库结构即将发生改变,届时需要卸载后重新安装(到时会提前提醒,下版可以导出 OPML 文件)。
3. 关于色彩:如果你现在使用的是 Android 12+,那么 Read You 的色彩是根据手机壁纸的颜色动态调整的(莫奈色系)。如果你是 Android 12 以下的系统,使用的是我固定预设好的色彩(也就是蓝色调),后面设置页面那边出来后,我再允许自定义色值。
4. WebView 全文解析的编码默认是 UTF-8,如果你访问的文章原页面中使用了其他的编码(例如“人民网 RSS” 是 GBK 编码),当全文解析时会显示乱码。同上条,将在设置页面中给予手动指定编码。
5. 网页可读性解析插件使用的是与 Mozilla Firefox 浏览器一致的 Readability4J,原文中的某些元素(例如无关元素、广告、内嵌视频)可能会被过滤,后面我再看能不能自定义忽略某些过滤规则。
6. 上面两条问题的临时解决办法:与 Reeder 的交互逻辑一样,可以点击文章标题跳转到原网页。
7. 判断 RSS 源是否已订阅的依据是 URL 是否一致,你可以通过不同的 URL 开头(如“http”或“https”)来订阅两个内容一样的 RSS 源,这可以用于一些测试。
👍3
#Update
更新日志:
1. 过长的 Feed 名称现在会在显示时正确截断。
2. 添加导出 OPML 文件功能(临时入口:长按 Read You 文本)。
3. 修复由 ksoap2 XmlPullParser 混淆产生的崩溃。
4. 修复当全屏状态下离开阅读页面后再返回,仍是全屏状态的 BUG。
5. 加入 ProfileInstaller,用于提前填充 ART 编译轨迹(期望能缓解一些卡顿)。
说明:
1. 关于导出 OPML 文件:Read You 在 OPML 2.0 的标准上还额外附加了“是否允许通知”、“是否全文解析”的属性,用于在未来版本的 Read You 间迁移订阅源的预设配置,对于绝大多数遵循 OPML 2.0 标准的 RSS 阅读器来说都能够正常解析。考虑到每个阅读器的解析方式略有差异,需要保证绝对的标准性,待后面做好新的导出入口后,会给出是否选择嵌入 Read You 附加信息的开关,这一点望周知!!!
2. OPML 文件仅用于记录分组和订阅源信息,对于本地已同步、已加星标、已读的文章等都不会被记录,其存在于 Read You 的本地应用数据库中,卸载 Read You 后将永久丢失,这一点也望周知!!!
3. 如果你想要测试“导出 OPML 文件”功能且不在意已同步的文章数据,建议在导出后清除 Read You 全部应用数据,再进行导入(尽管 Read You 目前可以忽略已有的订阅源,但分组名称是可以重复的。在已有数据上导入,会出现同样数量的空分组,而 Read You 暂时还没有删除分组功能)。
更新日志:
1. 过长的 Feed 名称现在会在显示时正确截断。
2. 添加导出 OPML 文件功能(临时入口:长按 Read You 文本)。
3. 修复由 ksoap2 XmlPullParser 混淆产生的崩溃。
4. 修复当全屏状态下离开阅读页面后再返回,仍是全屏状态的 BUG。
5. 加入 ProfileInstaller,用于提前填充 ART 编译轨迹(期望能缓解一些卡顿)。
说明:
1. 关于导出 OPML 文件:Read You 在 OPML 2.0 的标准上还额外附加了“是否允许通知”、“是否全文解析”的属性,用于在未来版本的 Read You 间迁移订阅源的预设配置,对于绝大多数遵循 OPML 2.0 标准的 RSS 阅读器来说都能够正常解析。考虑到每个阅读器的解析方式略有差异,需要保证绝对的标准性,待后面做好新的导出入口后,会给出是否选择嵌入 Read You 附加信息的开关,这一点望周知!!!
2. OPML 文件仅用于记录分组和订阅源信息,对于本地已同步、已加星标、已读的文章等都不会被记录,其存在于 Read You 的本地应用数据库中,卸载 Read You 后将永久丢失,这一点也望周知!!!
3. 如果你想要测试“导出 OPML 文件”功能且不在意已同步的文章数据,建议在导出后清除 Read You 全部应用数据,再进行导入(尽管 Read You 目前可以忽略已有的订阅源,但分组名称是可以重复的。在已有数据上导入,会出现同样数量的空分组,而 Read You 暂时还没有删除分组功能)。
👍5
Compose 没有附加 AOT 支持,高版本系统卡顿的小伙伴们,如果有 ROOT 可以临时到 adb shell 里 su 后执行 cmd package compile -m speed -f me.ash.reader ,强制进行 AOT 后就会很顺畅了。等我拿到基准文件才能打包顺畅的版本给大家。😘
👍1
测试了一晚上,对于 Android 9 以上的设备,系统会在晚些时候、充电时、设备空闲时、在后台对应用进行 dex2oat 编译(具体情况取决于系统调度),不再像低版本的系统那样在安装时就对应用进行提前编译,也不能再通过编码来主动要求优化,好处就是 APK 的安装速度快、空间占用小,坏处就是对于比较依赖提前编译的应用来说就挺难受的。
不过这方面我也在继续寻找尝试主动优化的方法,包括 Jetpack Compose 自身的部分,也包我自己写的差的部分。这两天也一直在整理和优化已有的代码,不会有新的功能发包,GitHub 上倒是一直有提交。主要是想混 JetBrains 的许可证
下次功能更新时就是之前提到的,需要重新安装的版本,主要原因是数据库结构需要改动,其次就是开始为 APK 指定一个版本号来进行后续迭代。
不过这方面我也在继续寻找尝试主动优化的方法,包括 Jetpack Compose 自身的部分,也包我自己写的差的部分。这两天也一直在整理和优化已有的代码,不会有新的功能发包,GitHub 上倒是一直有提交。
下次功能更新时就是之前提到的,需要重新安装的版本,主要原因是数据库结构需要改动,其次就是开始为 APK 指定一个版本号来进行后续迭代。
👍5