一个特别适合新手练习的Android小项目--Seeker

好久没有写博客了,今天看了下自己很久之前发过的一篇,浏览量还可以,相信有很多朋友和我一样遇到相同的问题,但愿我的文章能够对你解决问题起到一点作用,自己以后会坚持写博客,不单是安卓方面的,希望能借此帮到他人,同时也是提升自己。今天给大家介绍下我做的一款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

初学者必看 1、LinearLayout Button、RadioGroup、 CheckBox 2、TableLayout 3、FrameLayout 霓虹灯效果 4、RelativeLayout 梅花效果 5、自定义view跟着触点走的小球 6、 ListView 列表视图 7、WebView web视图 8、ToggleButton 动态布局效果 9、AnalogClock 、 DigitalClock and Chronometer 时钟和数字日期 10、AutoCompleteTextView 根据输入自动补充可能的全部 11、Spinner View 选择框(弹出框形式选择) 12、DatePicker TimePicker View 日期时间选择器 13、ProgressBar View 普通进度条、显示在标题栏上的进度条 14、RatingBar View 评级 15、 SeekBar 拖动条,音量调节效果 16、ScrollView 、HorizontalScrollView 垂直和水平滚动条 17、ScrollView 、HorizontalScrollView 垂直和水平滚动条 18、ExpandableListView 分组可展开收缩的ListView 19、Notification 状态栏通知 20、GridView、ImageSwitcher 21、SmsManager 消息管理器,发短信(这里是模拟器只能给其它模拟器发短信) 22、Intent Action、Category属性 测试 23、系统 Action、Category属性 24、ClipDrawable 徐徐展开的风景 25、AnimationDrawable 会动的图片 26、Menu、SubMenu、ContextMenu xml配置menu 27、Attribute 自定义view的duration属性 控制图片的透明度 28、Bitmap、BitmapFactory 图形与图像处理 29、Canvas 绘制自定义图形 30、Canvas 采用双缓存实现画图板 31、SharedPreference 简单的key-value数据存取 32、SQLiteDatabase 安卓客户端的嵌入式数据库 33、GestureDetector + ViewFlipper实现翻页效果 34、GestureLiberay 自定义手势 35、GestureLiberay 通过自定义的手势实现用户操作 36、TextToSpeech 语音朗读 37、ContentProvider、ContentResolver 应用之间共享数据 38、 Service 相当于没有界面的activity 39、Activity与Service运行中通信 40、Service 相当于没有界面的activity 41、AIDL Service android中的跨进程调用 客户端,服务端见AidlService 42、BroadcastReceiver 接收广播消息 43、非UI线程中不能操作UI线程中的View测试 44、ImageSwitcher animation gesture实现可以滑动的跑马灯 45、下载状态栏显示下载进度 46、Gallery3d效果 47、ListView 上拉加载更多效果 48、异步加载图片的二级缓存技术 49、QQ的好友列表展示效果 50、Fragment + ViewPager实现tab滑动切换 51、能够显示在桌面前面的的歌词效果 52、activity切换特效
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值