Skip to content

linfaimom/WeChatNews

Repository files navigation

WeChatNews

采用 MVP 模式构建的微信精选 APP

效果图

考虑到 Github 上展现图片不便,此图为拼合版本,请移步 screenshots 文件夹查看清晰的每张截图

也可在 此处 下载 APP 安装体验

背景

做这个小项目的初衷是为了总结与实践当时所学知识,诸如各种热门的新框架、新工具等,将其进行一个整合应用以提升自己的 Android 开发技能。而且因为我老爸经常喜欢看微信的文章,那为啥不趁机给他弄一个专门提供微信精选的新闻 APP 呢?

所用工具/技术

  • 采用负责网络请求的 Retrofit
  • 采用负责处理图片的 Picasso
  • 采用 “聚合数据” 所提供的免费 API,发起请求时将返还 JSON 格式的数据
  • 采用处理 Object 与 JSON 之间相互转化的框架——GSON
  • 采用实现代码低耦合的依赖注入框架 Dagger2
  • 采用 MVP 架构模式构建整个 APP

所实现功能/效果

  • 参照 Google 官方的 Material Design 对该 APP 进行了风格上的设计
  • APP 启动时开启一条线程对当前所处网络环境进行检查,UI 线程上则通过展现一张精美图片以缓解用户等待时的焦虑。根据最终检查状况弹出提示,以避免不必要的流量损耗
  • 对请求成功后所返还的数据做了分页处理,启动时默认加载 20 条,可根据需要调整加载条数
  • 下拉刷新,动画效果采用 Android 提供的原生控件 RefreshLayout
  • 上划滚动至底部时加载更多
  • 轻触右下角浮动按钮可回到顶部,且在用户上划即页面向下滚动时自动隐藏,反之则显现。同时,当滚动距离不超过指定值时,缓慢滚动到顶部,反之则快速回到顶部
  • 重写了 WebView 中的一些方法,以更友好的方式展现文章页面,如打开时会有进度条提示、启用一些 JavaScript 功能等等
  • 集成微信开放平台所提供的分享功能SDK,实现新闻的分享、收藏功能

总结

该项目在需求上实现了我的设想,即能够获取到每日新鲜的精选文章,同时还能够分享至朋友圈、分享给好友等等,我爸爸很认真的试用了,为我提供了很多建议,比如分享之类的功能就是他提出来的。通过这一个练手的小项目,确实加深了我对一些主流框架、技术以及一些理念的理解,也愈发让我感受到开发所带来的乐趣。当然,仍存在众多的功能尚待完善,譬如:消息的通知功能,如何能在新的精选文章出来时通知用户呢?是通过脚步轮询服务器呢还是异步回调?由于是采用别人所提供的数据,所以异步回调的路应该是走不通的。还有通知消息的推送服务,在我国国情下又是一个大坑,GMS用不了,国内推送提供商不知选谁是好,如何又能确保推送服务不被 kill?再有,界面的优化,如何更好的展示精选文章列表,等等之类的。我希望能在空余时间,尽量完善这个小项目,不仅仅停留在能用的程度。