Android 开发周报:参加挑战赛免费得 I/O 门票、MVP 与 MVVM 混合架构解析

  • 郭亮

2016 年 3 月 29 日

话题:移动Android语言 & 开发架构

新闻

  1. 《谷歌启动 Android Experiments 挑战赛 获奖者可获 I/O 门票》:近日谷歌向开发者发出邀请来挑战 Android 系统的用途,前三名获奖者能够免费获得 Google I/O 门票,此外还会筛选出 5 名参赛者每人获得一台 Nexus 6P。通过 Android Experiments 挑战赛,开发者能够提交个人认为 Android 的最佳使用案例,不限制参赛者的开发项目,但是要求项目开源,提交日期截止于 4 月 13 日。
  2. 《谷歌计划做 Android 手机通用 VR 设备 类似三星 Gear 开放版》:Google 内部人士的消息称,Google 第一款真正意义上的 VR 设备实际上就相当于三星 Gear VR 的开放版——该产品不会受品牌约束,支持所有的 Android 手机设备接入。在软件层面上,Google 未来的计划是把 VR 功能内建到 Android 中。如果这是真的,那么诸如 Cardboard 这样的 VR 设备将无需第三方应用介入,简化转换过程,进而从理论上降低延迟。

    目前 Google 官方尚未对 Android VR 和 VR 头戴设备的消息做出回应,但如果不出意外的话,相信在今年 5 月的 I/O 大会上我们就能一睹为快了。

教程

  1. 《从零开始的 Android 新项目 3 - MVPVM in Action, 谁告诉你 MVP 和 MVVM 是互斥的》:MVVM(Model-View-ViewModel),在 Android 上对应 data binding。即 ViewModel 到 View 的映射,不需要再去自己找到 View,然后更新字段,而是在映射建立后直接更新 ViewModel 然后反映到 View 上。而 MVP 解决了 activity/fragment 过重的问题,通过 V/P 分离能够帮助提高可维护性。本文作者在自己的新应用中,采用了 MVP+MVVM 的混合方式,阅读文章,了解这种架构的详细实施方案。
  2. 《Android Bitmap 面面观》:在日常开发中,可以说和 Bitmap 低头不见抬头见,基本上每个应用都会直接或间接的用到,而这里面又涉及到大量的相关知识。本文是对 Bitmap 常用知识的梳理总结,有助于我们全面的了解 Bitmap 的一些细节。
  3. 《ViewAnimator 源码分析》:在项目开发中我们应该都接触过动画效果的开发。我们知道在 Andorid 中实现动画大致分为两类,一种是 Tween/Frame 动画,另一种是 Property Animation 也就是属性动画。本文章介绍了属性动画中关于 ViewAnimator 的相关实现原理。ViewAnimator 是用来简化我们写属性动画代码量的,它可以通过非常简洁的代码通过建造者模式调用来组合各种动画,从而让代码简洁易读。本文详细解析了 ViewAnimator 的源码。
  4. 《Android 自定义 Lint 实践》:Android Lint 是 Google 提供给 Android 开发者的静态代码检查工具。使用 Lint 对 Android 工程代码进行扫描和检查,可以发现代码潜在的问题,提醒程序员及早修正。为保证代码质量,很多开发者都会在开发流程中加入代码检查的功能,如果代码检测到问题,则无法合并到正式分支中,这些检查中就包括 Lint。而由于原生 Lint 无法满足一些特有的需求以及原生 Lint 存在一些检测缺陷或者缺少一些必要的检测,所以需要自定义 Lint。本文是美团关于自定义 Lint 的实践。
  5. 《一种为 Apk 动态写入信息的方案》:为了防止被篡改,Apk 发布后都会带有签名。但有些时候我们需要在 Apk 安装之前写入一些数据,比如多渠道动态打包、安装 Apk 后需要根据不同的来源跳转到不同的页面等。Android 使用的 Apk 包的压缩方式是 zip,与 zip 有相同的文件结构,在 zip 文件的末尾有一个 Central Directory Record 区域,其末尾包含一个 File comment 区域,可以存放一些数据,所以 File comment 是 zip 文件一部分,本文提供的方案就是动态修改这个部分,实现了在不破坏压缩包、不重新打包的的前提下快速的给 Apk 文件写入自己想要的数据。
  6. 《携程移动 App 架构优化之旅》:本文为携程移动开发总监陈浩然在 2015 年 10 月份的 ArchSummit 全球架构师峰会上的演讲总结。由于面向受众为架构师,因此不会涉及到很多技术细节。通过本文,你可以了解携程通过哪些手段来优化它的 App 架构的。
  7. 《RxJava 学习总结》:RxJava 一个响应式编程框架,采用观察者设计模式,该框架毫无疑问是近两年来最火热的 Android 开发技术这一,本文是一篇关于 RxJava 的基础教程,作者总结了自己学习 RxJava 的一些知识点,有助于 RxJava 新手快速熟练该技术。

开源项目

  1. nginx-rtmp-module:这是一个本地的 RTMP 音视频直播 demo,有了它,就可以自己学习和使用 ffmpeg、libRTMP 库,能够在 Android 下写推流以及拉流播放的代码和应用。
  2. BoomMenu:BoomMenu 是一款带有爆炸效果的菜单按钮,不仅效果很炫,并且提供了多达 32 种的排列方式。
  3. RoadRunner:Road Runner 是一个通过使用 SVG 图片,快速生成加载动画的库。
  4. BlurLockView:这是一款毛玻璃效果的解锁界面,带有密码锁功能。

感谢徐川对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

移动Android语言 & 开发架构