好久没有写博客了,今天看了下自己很久之前发过的一篇,浏览量还可以,相信有很多朋友和我一样遇到相同的问题,但愿我的文章能够对你解决问题起到一点作用,自己以后会坚持写博客,不单是安卓方面的,希望能借此帮到他人,同时也是提升自己。今天给大家介绍下我做的一款App,先看下效果图:
登录界面:
导航栏:
主界面:
笔记模块:
单词模块:
新闻模块:
闹钟:
推送:
主要用到的知识点:
一、有登录界面,实现个人账户注册、登录、记住密码(用数据库+sharepreference)、短信验证(Mob的SMSSDK)、推送功能(友盟)、日夜模式(AlarmManager定时启动Service,根据当时系统时间通过Broadcast提醒用户更换模式)
二、DrawerLayout整体抽屉,能显示和修改用户基本信息,个人头像上传修改,个性签名,显示当前城市的天气用于便签中(和风天气的SDK)
三、便签功能:
1、便签显示(RecyclerView + Adapter+Glide加载图片),支持本账户便签增删改查,分组,排序。(用SerachView;Litepal操作SQLite)
2、便签富文本编辑,支持图片+文字(SpannableString+正则表达式,选择图片采用知乎开源图片选择器Matisse)
3、便签提醒(AlarmManager+Service),能够自己设置闹钟,响铃振动,通知栏显示通知,息屏唤醒
四、单词功能:
查词功能,背单词,编辑单词内容,个人词库,存储账户学习进度。(Fragment;因Litepal不支持其它遗留数据库,用SQLite Expert拷贝第三方词源实现本地查词;OkHttp+GSON解析调用百度翻译API在线翻译;背单词模块有背诵模式和测试模式,分别记录各自进度;MPAndroidChart实现学习进度柱状图 )
五、新闻功能:
调用网易新闻API,支持多种新闻,下拉刷新(OkHttp+Fastjson解析,ListView,RecyclerView,WebView)
总结:
1、对于短信验证、推送功能、和风天气这些只要注册相应开发者,集成了对应的SDK还是比较容易实现的,按照它们的操作指导来做就行。短信验证在模拟器上面实现不了,刚开始我以为要递交公司的营业执照进行认证才能用的,后面问了Mob客服,,要把App下到手机才能用。
MobTech - 全球领先的数据智能科技平台
友盟+,国内领先的第三方全域数据智能服务商
和风天气 | 气象数据服务商, 天气预报
2、对于便签功能,最难的地方就是储存了,这里我想了好久,查了好久SQLite数据库是否可以储存图片,怎么存储,有一天发现SpannableString,可以用它来做富文本编辑,可是网上很多关于它的用法,却没有关于它是怎么存储的,后面通过这篇文章EditText利用Spannabling和ImageSpan将字符串解析成图文混合形式得到了答案。首先通过知乎的开源的图片选择器Matisse选择好图片,它会返回图片的路径,注意现在用这个框架的话需要自己另建一个GlideEngine类不然用不了,我们得到路径后用ImageSpan将图片在EditText里显示出来,注意我们保存的时候还是保存图片的路径,只是现在显示给用户的时候我们用ImageSpan来替代路径了,这点要理解。然后我们每次编辑笔记之前,要通过正则表达式在EditText中将图片的路径筛选出来,替换成相应的图片,对正则表达式不了解的朋友可以点这里(Java_正则表达式和文本操作)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili。
3、单词模块的话比较难的是怎么使用第三方的词库,需要的朋友可以点击第三方词库,我需要用Litepal进行操作,问题是Litepal又不支持遗留数据库,必须是它自己建的,后面参考了这篇文章LitePal使用已有数据库,说明还是有一线希望的。于是我就试着先用Litepal定义相关的表,再将App的数据库导出来,通过SQLite Expert Professional 把第三方词库的单词表拷进我的数据库里,注意是拷贝整个表,别一个个拷贝单词,几万个单词会让SQLite Expert Professional 卡死,最后还要修改这个表的主键之类的,为的是和Litepal定义的属性相对应,最后将做好的数据库覆盖App里面的数据库就Ok了。
4、调用百度翻译API在线翻译我用了HttpUrlConnection和OkHttp分别实现了,解析用的是GSON。新闻那里网络请求用的是OkHttp,分别用JSONObject,GSON,Fastjson实现了解析,网上许多免费API用不了,或者新闻太旧,有兴趣的朋友可以拿这个API练练手资源 | 分享一个网易新闻的 API - 简书,网络方面的话这里有一篇文章对JSON解析总结得非常好浅谈Android项目----JSON解析(4种解析技术详解) - 程沐喆 - 博客园 。新闻标题那里,点击Recyclerview条目改变控件颜色,可以参考这篇文章recyclerview点击事件与点击更改颜色 - 天才第一步 。
5、补充一下,哪位朋友想学Git的话,可以先看【教程】Git 实用教程(小甲鱼)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili ,后看Git教程 - 廖雪峰的官方网站,因为网上的资源多而乱,这是我发现比较好的。App有些资源我参考了百果园、印象笔记、小米便签、华为便签的,这里分享一下开发过程中我用到的一些工具和收藏的一些经典的网站,链接:百度云_androidFile, 提取码:mstb。
最后,App相关资源已上传Github,欢迎访问 Seeker