Google I/O 2019 Android 应用源代码现已发布
作者: Takeshi Hagikura, 开发者计划工程师
Google I/O 2019
https://play.google.com/store/apps/details?id=com.google.samples.apps.iosched 源代码 https://github.com/google/iosched
尽享 Android Q 新功能
手势导航
Android Q 引入了完全手势导航选项,允许用户通过手势动作返回上一级界面和主屏。为了支持手势导航支持,应用开发者需要做到以下两点:
将应用内容扩展到屏幕边缘
处理存在冲突的应用手势
手势导航: 返回上一级界面和主屏
手势导航 https://developer.android.google.cn/preview/features/gesturalnav 《手势导航: 实现变到边的全屏体验》 https://medium.com/androiddevelopers/gesture-navigation-going-edge-to-edge-812f62e4e83e 相关代码 https://github.com/google/iosched/commit/84ef129ef20cd87119edbb26ccaf1ab5aa58418b
深色主题背景
深色主题背景
https://developer.android.google.cn/preview/features/darktheme
如需支持夜间主题背景,您应用的主题应继承下面其中一个夜间主题:
<style name="AppTheme" parent="Theme.AppCompat.DayNight">
OR
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
深色主题背景下的日程表 UI
专题分享 https://www.youtube.com/watch?v=OCHEjeLC_UY 初步实现 https://github.com/google/iosched/commit/c635ca7abaf4bea91643a5568e360d227d459f94 风格修复 https://github.com/google/iosched/commit/317e0f98020ce10507cb3c6594c2133e139c4277 更多更新 https://github.com/google/iosched/commit/986c76164bf3df692f34af1276297aacdeaa8e10
日程界面优化
2019 I/O 应用允许用户直接跳转至另一个大会日
将日程显示为单个列表 https://github.com/google/iosched/commit/4ee7a1772f2b76b17533c5b14890811015d46160 显示日期标识 https://github.com/google/iosched/commit/23295883d0ef74bdc358ae8b5615dda33a6a6637
导航组件
我们利用导航组件把今年的 I/O 应用简化为一个单 Activity 应用,这种方法具备下述优点:
开发者可以在导航编辑器中一眼看到所有界面过渡,大幅简化了不同界面的启动活动。
移除了向上/返回导航操作的样板代码
使用 Safe Args Gradle 插件在各个 Fragment 之间传递静态类型的参数
导航组件 https://developer.android.google.cn/guide/navigation
在导航编辑器内查看所有过渡动画
《导航组件入门指南》 https://developer.android.google.cn/guide/navigation/navigation-getting-started 添加 Gradle 依赖项和插件 https://github.com/google/iosched/commit/3917256b8d8e55596d526e431c70008310012460 迁移 MainActivity https://github.com/google/iosched/commit/2c3431369951824c42c8f5e20bb34fdaa0eae94d 更新会话详情和次级导航结构 https://github.com/google/iosched/commit/4baf5b5f4daa2a2d53e65a96b59dd90f80633a45 禁用导航抽屉 https://github.com/google/iosched/commit/6c69712ccb27f3875c19b9dfcc6946dd52c0e02c
使用 Room 实现全文搜索
查找某个讨论会或分享人
Room Jectpack https://developer.android.google.cn/training/data-storage/room 全文搜索特性 https://developer.android.google.cn/reference/androidx/room/Fts4 使用 Room 添加搜索功能 https://github.com/google/iosched/commit/e51008748d4a6c2ec6e2010f6348e9d1e138e717 在搜索结果中包含分享人信息 https://github.com/google/iosched/commit/365174615264c5ea99bbd72e29fe9230eb796807 在搜索结果中包含 codelab 信息 https://github.com/google/iosched/commit/1a1237b7366b5f717cf1914d82a34e16cf95c951 添加 Room 迁移路径 https://github.com/google/iosched/commit/3c933eae9be6a29b84b5de0d29348768cb168437
更多优化
此外,我们还利用 Firebase Remote Config (远程配置) 来切换各个特性的显示。这样做的好处在于,我们无需更新整个应用,也不必移除用于表示议程 UI 中各个活动起始或结束时间的硬编码值,而是直接在 Remote Config 中更新 Boolean 值即可。
探索源代码
错误追踪页面 https://github.com/google/iosched/issues
想了解更多 Android 内容?
在公众号首页发送关键词 “Android”,获取相关历史技术文章;
还有更多疑惑?欢迎点击菜单 “联系我们” 反馈您在开发过程中遇到的问题。
推荐阅读