google开源软件_android open source project

google开源软件_android open source project今年的 I/O 应用大幅修改了现有功能并添加了若干新特性。在这篇文章中,我们将着重围绕其中几项主要变更进行说明。 Android Q 引入了完全手势导航选项,允许用户通过手势动作返回上一级界面和主屏。为了支持手势导航支持,应用开发者需要做到以下两点: Google I/O 20…

作者: Takeshi Hagikura, 开发者计划工程师

今年的 I/O 应用大幅修改了现有功能并添加了若干新特性。在这篇文章中,我们将着重围绕其中几项主要变更进行说明。

尽享 Android Q 新功能

手势导航

Android Q 引入了完全手势导航选项,允许用户通过手势动作返回上一级界面和主屏。为了支持手势导航支持,应用开发者需要做到以下两点:

  1. 将应用内容扩展到屏幕边缘
  2. 处理存在冲突的应用手势

Google I/O 2019 应用是首批完全支持手势导航的应用之一。更多内容,请阅读《手势导航: 实现边到边的全屏体验》系列连载,或请前往 Github 查看团队在 Google I/O 应用库中提交的相关代码,了解如何将应用内容扩展到屏幕边缘。

google开源软件_android open source project
手势导航: 返回上一级界面和主屏

深色主题背景

Android Q 引入的另一项新特性是系统深色主题背景,它既可全局应用于 Android 系统界面,也可应用于设备上运行的应用。对于开发者而言,深色主题背景具备诸多优势,其中包括: 降低电耗;改善弱视以及对强光敏感的用户的可视性等。

如需支持夜间主题背景,您应用的主题应继承下面其中一个夜间主题:

<style name="AppTheme" parent="Theme.AppCompat.DayNight">
OR
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">

请避免使用硬编码颜色或图标,而是选用主题属性 (例如: ?android:attr/textColorPrimary) 或适合在夜间使用的资源 (例如: 在 res/values/colors.xml 和 res/values-night/colors.xml 中定义的颜色)。更多内容,请收看 Google I/O 大会上关于深色主题背景与手势导航的专题分享, 或查看 Github 上 Google I/O 应用库中团队所提交的三份代码 (初步实现风格修复以及更多更新),了解深色主题背景在真实应用中的具体实现方式。

google开源软件_android open source project

日程界面优化

在 2018 年,大会日程的 UI 设计采用了标签界面,一个标签代表一个会议日,用户可通过竖屏滑动来查看不同的日程安排。今年的 I/O 应用更改了原先的 UI 设计,从而解决了若干可用性及性能问题。以 UI 流畅性为例,应用在日程表 UI 出现后就同时渲染所有标签内的 view,造成严重的 UI 卡顿问题,且延迟现象在低端设备上尤为明显。

新的日程 UI 采用单流开发,允许应用仅渲染可视内容,用户只需触击 UI 顶部的日期选项便可跳转至相应页面,并查看当天的议程安排。如果您想了解我们对日程表 UI 作出了哪些更改,请前往 Github 查看相关代码 (将日程显示为单个列表显示日期标识)。

导航组件

我们利用导航组件把今年的 I/O 应用简化为一个单 Activity 应用,这种方法具备下述优点:

  • 开发者可以在导航编辑器中一眼看到所有界面过渡,大幅简化了不同界面的启动活动。
  • 移除了向上/返回导航操作的样板代码
  • 使用 Safe Args Gradle 插件在各个 Fragment 之间传递静态类型的参数

请阅读《导航组件入门指南》,学习如何在应用中添加导航组件,或查看 Google I/O 2019 应用库中的相关代码 (添加 Gradle 依赖项和插件, 迁移 MainActivity, 更新会话详情和次级导航结构, 禁用导航抽屉),了解导航组件在真实应用中的具体用法。

google开源软件_android open source project
在导航编辑器内查看所有过渡动画

使用 Room 实现全文搜索

我们为今年的大会应用添加了一个搜索功能,方便用户快速查找有关演讲、讲师和 codelab 的信息。在实现过程中,我们使用了 Room Jectpack 组件中的全文搜索特性。一旦从服务器获取最新的大会数据,我们就会对 Room 表格内的有关数据进行更新,每个 Room 表格都有对应的 FTS 映射表格。当用户在搜索框中输入要查找的内容后,检索项便会被用于查询演讲名称等数据。查询结果将立即显示在屏幕上,因此,如果搜索字段发生任何字符更改,服务器会马上返回更新后的结果。接着,用户便可以点击某个词条,导航至对应页面并获取详细内容。如果您对全文搜索有兴趣,欢迎查看我们的代码 (使用 Room 添加搜索功能在搜索结果中包含分享人信息在搜索结果中包含 codelab 信息添加 Room 迁移路径)。

google开源软件_android open source project
查找某个讨论会或分享人

更多优化

除了以上关键变更以外,我们还对许多细节部分进行了优化与改进。比如说,我们添加了新的主屏 UI 和 Codelab UI,前者允许应用在大会期间向用户显示与时间相关的信息,后者则提供了更多 I/O 大会上与 codelab 有关的内容以及详细的参与方法。

google开源软件_android open source project
Codelabs UI

google开源软件_android open source project
主屏 UI

此外,我们还利用 Firebase Remote Config (远程配置) 来切换各个特性的显示。这样做的好处在于,我们无需更新整个应用,也不必移除用于表示议程 UI 中各个活动起始或结束时间的硬编码值,而是直接在 Remote Config 中更新 Boolean 值即可。

探索源代码

感兴趣的小伙伴不妨马上前往 Github 网站,尽情探索 2019 I/O 大会应用的源代码。欢迎大家留言,与我们分享您的想法与感受。如果您有任何疑问或问题,请通过 Github 的错误追踪页面提交报告。

点击前往Android Developers 官方文档查看更多信息

google开源软件_android open source project

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/13427.html

(0)

相关推荐

  • Docker下安装Elasticsearch、ik分词器、kibana

    Docker下安装Elasticsearch、ik分词器、kibana1:使用docker拉取Elasticsearch镜像 docker pull elasticsearch:7.12.0(不加版本号默认是最新版本) 2:查看是否成功下载镜像 docker image

    2023-04-14
    101
  • mysql 执行查询SQL 一直执行不出结果「建议收藏」

    mysql 执行查询SQL 一直执行不出结果「建议收藏」今天执行一个mysql 语句, 一直在 执行,执行了5分钟了,还是没有出来结果。 # 每个组织下包括 同级或者下级的 注册店铺数 # 查询 历史每一天的每个组织下的当天存在的门店数 select d…

    2022-12-22
    92
  • arraylist al_让大姨妈来少点

    arraylist al_让大姨妈来少点这是一个小白程序员问我的问题。 他:异常信息是 java.lang.UnsupportedOperationException,是调用 add 方法时抛出的。 恩,我大概明白了,这可能是 ArrayList的又一个坑,和 subList应该有异曲同工之妙。 Arrays.asL…

    2023-07-19
    87
  • Cassandra 在 360 的实践与改进[通俗易懂]

    Cassandra 在 360 的实践与改进[通俗易懂]分享嘉宾:王锋 奇虎360 技术总监 文章整理:王彦 内容来源:Cassandra Meetup 出品平台:DataFunTalk 注:欢迎转载,转载请留言。 导读:2010年,Dropbox 在线云

    2023-01-31
    100
  • 2021你集五福了吗?背后的Web3D引擎Oasis Engine正式开源!

    2021你集五福了吗?背后的Web3D引擎Oasis Engine正式开源!相信大家已经体验了今年支付宝五福的活动,无论是今年的五福首页还是打年兽游戏都是由蚂蚁互动图形引擎(代号:Oasis Engine)驱动的。 Oasis Engine 是蚂蚁集团 Web 3D 互动图形引擎,同时也是阿里巴巴互动技术方向的首选 Web 3D 引擎,已于 2 月 1…

    2023-11-11
    65
  • mysql安装教程_本人亲测

    mysql安装教程_本人亲测数据库 MySQL安装教程

    2023-04-15
    117
  • 什么是idle

    什么是idlePython是一种高级编程语言,其优雅的语法和强大的扩展性让它成为众多开发人员的选择。然而,相对于其他编程语言,Python的开发工具比较简单,有些开发者甚至选择在文本编辑器中手动编写Python代码。在这种情况下,IDLE就成为了一个非常有用的工具。

    2024-05-18
    12
  • Android组件化开发思想与实践[亲测有效]

    Android组件化开发思想与实践[亲测有效]项目按功能拆分成功若干个组件,每个组件负责相应的功能,如login、pay、live。组件化与模块化类似,但不同的是模块化是以业务为导向,组件化是以功能为导向。组件化的颗粒度更细,一个模块里可能包含多个组件。实际开发中一般是模块化与组件化相结合的方式。 (1)提高复用性避免重复…

    2023-08-17
    89

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注