Reading:一款不错的Material Desgin风格的Kotlin版本的开源APP

简介: 版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/81946831 Readinghttps://github.com/Hankkin/Reading简介 很久不见,重新拾起博客吧,今天分享一个开源APP-Reading,项目的初衷是因为自己平时翻文章,但是公众号又经常忘记看,自己索性搞一个APP吧,顺便练一下Kotlin。
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/81946831

Reading

https://github.com/Hankkin/Reading

简介

很久不见,重新拾起博客吧,今天分享一个开源APP-Reading,项目的初衷是因为自己平时翻文章,但是公众号又经常忘记看,自己索性搞一个APP吧,顺便练一下Kotlin。借助着WanAndroid OpenApi搞起,同时里面加了一些小工具,具体功能向下看吧,然后也尝试了一下以前想实现但是没实现过的功能,废话不多说,先来一波图。各位如果有什么意见可以在Issues上提,或者联系我。

Reading: Reading是一款基于WanAndroid OpenApi开发的阅读类工具,如果你是一个热衷于Android开发者,那么这款软件能帮助你阅读精品Android文章。同时Reading中还包含”英文单词”、”账号本子”、”天气”、”查单词”、”快递查询”等小工具。项目基于”Kotlin+MVP”架构开发,风格大概也许属于Material Desgin原质化风格,包含主题颜色切换、百变Logo、等功能。在此感谢WanAndroid的OpenApi,以及其它开源项目的贡献。

ScreenShot

16560be364fb89df?w=1080&h=2160&f=jpeg&s=
16560bf2f642eb0f?w=1080&h=2160&f=jpeg&s=
16560bf2f642eb0f?w=1080&h=2160&f=jpeg&s=
16560bf2f642eb0f?w=1080&h=2160&f=jpeg&s=
16560bf2f642eb0f?w=1080&h=2160&f=jpeg&s=
16560bf2f642eb0f?w=1080&h=2160&f=jpeg&s=
16560bf2f642eb0f?w=1080&h=2160&f=jpeg&s=
16560bf2f642eb0f?w=1080&h=2160&f=jpeg&s=
16560bf2f642eb0f?w=1080&h=2160&f=jpeg&s=
16560bf2f642eb0f?w=1080&h=2160&f=jpeg&s=
16560bf2f642eb0f?w=1080&h=2160&f=jpeg&s=
16560bf2f642eb0f?w=1080&h=2160&f=jpeg&s=
16560bf2f642eb0f?w=1080&h=2160&f=jpeg&s=
16560bf2f642eb0f?w=1080&h=2160&f=jpeg&s=
16560bf2f642eb0f?w=1080&h=2160&f=jpeg&s=
16560bf2f642eb0f?w=1080&h=2160&f=jpeg&s=
16560bf2f642eb0f?w=1080&h=2160&f=jpeg&s=

DownLoad

https://fir.im/Reading

16560c6f7ba0fa1c?w=730&h=682&f=png&s=376

Function Tips

1.首页

  • WanAndroid API实现Android文章列表热门搜索文章项目列表
  • 刷新、置顶、分享文章搜索文章搜索历史
  • 收藏列表

2.工作台

  • 快递查询 使用快递100免费API进行快递查询
  • 扫一扫 快速扫一扫、从相册选择扫一扫
  • 查询单词 使用有道SDK查询单词 加入单词本
  • 单词本 单词本记录功能 标记重点
  • 账号本子 新建账号 保存本地 记录你的常用账号密码
  • 每日推荐 标记重点的单词推荐在首页

3.我的

  • 登录注册 使用WanAndroid Api进行账号注册登录
  • TODO List WanAndroid API 待办事项 (待开发)
  • 设置 个性换肤、账号锁功能、本地数据备份、百变Logo、清除缓存

Skill Tips

  • 项目架构 使用MVP架构模式搭建,封装MvpActivity、MvpFragment、BasePresenter、BaseView。P层绑定V层生命周期 。具体可见MVP包

  • 网络层 使用Retrofit+RxJava进行网络请求,封装公共Rerofit的HttpClientUtils(创建RetrofitBuilder、OkHttpClient、addHeader、拦截器、Cookie、https等)、工厂模式创建不同BaseUrl的网络对象。具体可见http包

  • 缓存 使用GreenDao数据库缓存本地数据,并提供数据备份、还原功能。同时结合MVP架构,将数据库操作作为Dao层,Dao层封装Protocol,利用工厂模式包装GreenDao产生的xxxBeanDao

  • RecycleAdapter 封装RecycleView Adapter 配合SwipeRefreshLayout支持下拉刷新、上拉加载功能,不满足一屏数据

  • RxBusTools 封装RxBusTools事件分发 封装BaseActivity、BaseFragment统一处理注册监听事件

  • StatuBarUtils沉浸式 使用写代码的猴子StatusBarUtil 状态栏工具类(实现沉浸式状态栏/变色状态栏)适配沉浸式通知栏

  • 主题切换 B站开源框架MagicaSakura

  • 百变Logo Android群英传中利用根据主题颜色动态切换Icon,部分机型可能会出现crash,目前还没找到更好的解决方案,所以提供了开启关闭的开关。如果有大神可以在Issues提供。

  • 本地数据备份还原 通过读取数据库数据写入txt文件,读取txt文件数据还原实现,记录备份还原的时间戳作为版本号

  • 单词翻译 使用有道SDK翻译单词

  • FloatActionButton 实现首页悬浮按钮 点击展开

  • HorizontalScrollView+ViewPager 首页仿网易云音乐滑动

  • BottomSheet 主题切换底部弹出框

  • 手势解锁 参考Github-ihsg/PatternLocker

Version

V1.0.1

  • 完善数据备份还原清空数据功能

  • 完善账号锁功能

  • 新增版本号

V1.0.0

  • 首次提交 部分功能不完善

License

Copyright (C) 2018 Hankkin

Licensed under the Apache License, Version 2.0 (the “License”);
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an “AS IS” BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.


我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=1v9bg469utllf

相关文章
|
8天前
|
Android开发 Kotlin
kotlin开发安卓app,如何让布局自适应系统传统导航和全面屏导航
使用`navigationBarsPadding()`修饰符实现界面自适应,自动处理底部导航栏的内边距,再加上`.padding(bottom = 10.dp)`设定内容与屏幕底部的距离,以完成全面的布局适配。示例代码采用Kotlin。
45 15
|
8天前
|
存储 API Android开发
kotlin开发安卓app,使用webivew 触发 onShowFileChooser, 但只能触发一次,第二次无法触发,是怎么回事。 如何解决
在Android WebView开发中,`onShowFileChooser`方法用于开启文件选择。当用户只能选择一次文件可能是因为未正确处理选择回调。解决此问题需确保:1) 实现`WebChromeClient`并覆写`onShowFileChooser`;2) 用户选择文件后调用`ValueCallback.onReceiveValue`传递URI;3) 传递结果后将`ValueCallback`设为`null`以允许再次选择。下面是一个Kotlin示例,展示如何处理文件选择和结果回调。别忘了在Android 6.0+动态请求存储权限,以及在Android 10+处理分区存储。
|
9天前
|
存储 移动开发 Android开发
使用kotlin Jetpack Compose框架开发安卓app, webview中h5如何访问手机存储上传文件
在Kotlin和Jetpack Compose中,集成WebView以支持HTML5页面访问手机存储及上传音频文件涉及关键步骤:1) 添加`READ_EXTERNAL_STORAGE`和`WRITE_EXTERNAL_STORAGE`权限,考虑Android 11的分区存储;2) 配置WebView允许JavaScript和文件访问,启用`javaScriptEnabled`、`allowFileAccess`等设置;3) HTML5页面使用`<input type="file">`让用户选择文件,利用File API;
|
13天前
|
前端开发 API Android开发
|
1月前
|
安全 JavaScript 前端开发
kotlin开发安卓app,JetPack Compose框架,给webview新增一个按钮,点击刷新网页
在Kotlin中开发Android应用,使用Jetpack Compose框架时,可以通过添加一个按钮到TopAppBar来实现WebView页面的刷新功能。按钮位于右上角,点击后调用`webViewState?.reload()`来刷新网页内容。以下是代码摘要:
|
1月前
|
缓存 Android开发 Kotlin
【安卓app开发】kotlin Jetpack Compose框架 | 先用OKhttp下载远程音频文件再使用ExoPlayer播放
使用 Kotlin 的 Jetpack Compose 开发安卓应用时,可以结合 OkHttp 下载远程音频文件和 ExoPlayer 进行播放。在 `build.gradle` 添加相关依赖后,示例代码展示了如何下载音频并用 ExoPlayer 播放。代码包括添加依赖、下载文件、播放文件及简单的 Compose UI。注意,示例未包含完整错误处理和资源释放,实际应用需补充这些内容。
|
20天前
|
Android开发
【亲测,安卓版】快速将网页网址打包成安卓app,一键将网页打包成app,免安装纯绿色版本,快速将网页网址打包成安卓apk
【亲测,安卓版】快速将网页网址打包成安卓app,一键将网页打包成app,免安装纯绿色版本,快速将网页网址打包成安卓apk
21 0
|
1月前
|
Java Android开发 Kotlin
Android面试题:App性能优化之Java和Kotlin常见的数据结构
Java数据结构摘要:ArrayList基于数组,适合查找和修改;LinkedList适合插入删除;HashMap1.8后用数组+链表/红黑树,初始化时预估容量可避免扩容。SparseArray优化查找,ArrayMap减少冲突。 Kotlin优化摘要:Kotlin的List用`listOf/mutableListOf`,Map用`mapOf/mutableMapOf`,支持操作符重载和扩展函数。序列提供懒加载,解构用于遍历Map,扩展函数默认参数增强灵活性。
21 0
|
1月前
|
存储 API 开发工具
kotlin安卓开发,如何获取设备的唯一id, 有哪些开源库
在Kotlin的Android开发中,获取设备唯一ID的方法包括不稳定的ANDROID_ID、需要权限的IMEI、使用UUID与SharedPreference结合,以及考虑隐私的Firebase Installations ID和Advertising ID。由于隐私问题和Google Play政策,IMEI和ANDROID_ID不推荐作为长期唯一标识。推荐使用UUID(首次安装时生成并存储),或在涉及广告时使用Advertising ID(需用户同意),而Firebase Installations ID则提供了一种合规的设备标识选项。在选择方法时,必须遵守隐私指南和政策。
142 0
|
1月前
|
存储 Android开发 Kotlin
Kotlin开发安卓app,在使用 MediaPlayer 播放 res/raw 中的音乐时遇到突然中断的问题,而 onErrorListener 没有接收到任何报错
在使用 Android MediaPlayer 播放 res/raw 中的音乐时遇到中断问题,可能的原因包括资源问题、媒体文件编码格式、生命周期管理和设备资源配置。要排查问题,检查音频文件是否正确包含,格式编码是否支持,MediaPlayer 是否正确管理及释放,以及设备是否有足够存储和配置。通过设置 onErrorListener 日志和确保在 onDestroy 中释放资源来调试。如果文件过大,考虑使用 AssetManager。遵循这些步骤可帮助诊断并解决播放中断的问题。