这是我们有关“手势导航”系列的第一篇文章。

借助Android 10,已添加了新的系统导航模式,允许用户向后导航,导航至主屏幕并通过手势触发设备助手。

Android 10 中新手势的演示

通过使用手势模型进行系统导航,我们可以为您的应用提供更多屏幕。这有助于使应用程序为您的用户创建更身临其境的体验。

用户将能够在大多数设备上选择他们所选择的导航模式。现有的三键导航模式(包含返回,首页,最近状态)将继续存在。从10开始启动的所有设备上都需要它。

这篇文章是一个小系列的第一篇,该系列着重于开发人员如何在应用程序中支持手势导航。该系列将涵盖以下主题:

  1. 边缘到边缘,使您的应用可以在整个屏幕上绘制
  2. 处理与系统UI的视觉重叠
  3. 处理手势与系统手势冲突
  4. 常见方案以及如何支持它们

让我们开始了解应用程序如何“边对边” ...

边到边

我使用“边缘到边缘”一词来描述扩展其窗口以扩展到整个屏幕以实现更身临其境的外观的应用程序。默认情况下,应用程序布置在顶部状态栏下方,底部导航栏上方(统称为系统栏)。

通过边缘到边缘,应用程序将被布置在系统栏的后面。这是为了让您的应用程序内容闪闪发光,为用户创造更身临其境的体验。

实际上,这意味着应用程序需要考虑两件事:

在导航栏后面绘图

支持手势导航的第一个也是最重要的考虑因素是在导航栏后面绘制。由于导航栏的大小和突出程度已缩小,因此现在强烈建议应用程序在Android 10 +上运行时在导航栏后面绘制,以提供更具吸引力的现代UX。

在装有Android Pie或更低版本的设备上运行时,导航栏后面的绘图是可选的,可让应用程序确定有意义的内容。也就是说,几乎所有必需的API都可以使用API​​ 21(或由AndroidX处理差异),因此支持pre-Q设备所需的额外工作量很小。使用Pre-Q设备的用户还可以从更沉浸的体验中受益。我们认为它是可选的,仅是为了减少所需的工作和测试量。

在状态栏后面具有全角图像的应用示例

实作

实施“边缘到边缘”绘图的三个关键步骤:

1.要求全屏显示

第一步是告诉系统将我们的应用布置在系统条后面(在y轴上)。我们为此使用的API是视图上的setSystemUiVisibility(),带有一些标志。我们感兴趣的标志是:

view.systemUiVisibility =  //告诉系统该窗口希望内容 //在最极端的情况下进行布局。请参阅有关的文档 //有关详细信息的更多信息 View.SYSTEM_UI_FLAG_LAYOUT_STABLE or //告诉系统该窗口希望内容 //布局就像导航栏被隐藏一样 View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION

之后,我们的视图将全屏显示在导航栏的后面。

现在,我们的应用全屏显示在导航栏后面

2.更改系统栏颜色

由于我们的应用现在正以全屏布局,因此我们现在需要更改系统栏颜色,以允许我们查看其背后的内容。

Android 10

Android 10上运行时,我们唯一的任务是将系统栏颜色设置为完全透明:

在Android 10上,系统现在负责在所有导航模式下处理系统栏内容(时间,图标,拖动手柄等)的所有视觉保护。这意味着我们不再需要自己做。实际上,这意味着系统将执行以下两项操作之一:

动态色彩适应

系统栏内容根据其后面的内容更改颜色。因此,如果手柄高于光线含量,它将变为深色。反之亦然,在黑暗内容面前变为亮光。这就是我们所谓的动态色彩适应。

Android 10 中的动态色彩适应

Translucent scrim Alternatively

另外,系统可以在系统条后面应用Translucent scrim Alternatively。最大的警告是,仅当您的应用声明targetSdkVersion为29 时,才会发生这种情况。如果您的应用针对的是SDK 28或更低版本,则不会显示自动稀松布,而为您提供透明的导航栏。

Android 10上的按钮导航模式下的系统提供

发生这两种操作都是为了确保用户始终可以看到系统栏内容。系统选择使用哪个选项取决于一些因素。如果满足以下条件,将使用scrim :

  • 启用了一种按钮模式(2按钮或3按钮)。
  • 在手势导航模式下,设备制造商已选择禁用动态颜色自适应。造成这种情况的可能原因是设备的性能不足以适应色彩适应。

手势导航使用scrim的示例

否则,将使用动态色彩适应。列出的原因是今天使用的原因,但将来可能会改变.

在10上禁用系统栏保护

如果您不想让系统执行任何自动内容保护,则可以通过在主题中设置android:enforceNavigationBarContrast和/或android:enforceStatusBarContrast来禁用它们false。

Android Pie及以下

如果您也决定在Pre-Q设备上进行全面测试,则应设置半透明的系统栏颜色以用作内容保护。具有70%不透明度的黑色稀松布是开始使用深色系统栏的主题的好地方:

您可能需要根据后面显示的内容来调整上/下的不透明度。对于浅色主题,您还需要设置浅色半透明颜色(例如:)#B3FFFFFF。

该示例在暗色和亮色主题中均显示了适当的scrim

3.视觉冲突

完成此操作后,您可能已经注意到,一些重要的视图现在正在系统栏的后面。我们的第三步也是最后一步是处理任何视觉重叠,我们将在下面的下一篇头条文章中介绍。欢迎关注‘三声猿’

最后感谢Nick Butcher 。

android studio 顶部导航栏_Android10 手势导航开发与处理:边到边(I)相关推荐

  1. React Native 的顶部导航栏和底部导航栏目

    说来也是惭愧,本来关于底部导航栏,我已经写过一篇博客,只不过那篇更偏向于入门一些,当时一实现功能之后就迫不及待的分享给大家了.地址在这儿:http://blog.csdn.net/LJFPHP/art ...

  2. Android中导航栏之自定义导航布局

    Toolbar系列文章导航 Android中导航栏之Toolbar的使用 Android中导航栏之溢出菜单OverflowMenu Android中导航栏之搜索框SearchView Android中 ...

  3. 【CSS】课程网站横版导航栏 ( 横版导航栏测量及样式 | 代码示例 )

    文章目录 一.盒子测量及样式 1.总体盒子测量及样式 2.左侧盒子测量及样式 3.中间盒子测量及样式 4.右侧盒子测量及样式 二.横版导航栏代码示例 1.HTML 标签结构 2.CSS 样式 3.显示 ...

  4. 【HTML+CSS】页内侧边导航栏 页内导航

    页内侧边导航栏 页内导航 源码 HTML部分 CSS部分 效果 源码 HTML部分 <!DOCTYPE html> <html><head><meta cha ...

  5. Android NDK开发之旅(2):一篇文章搞定Android Studio中使用CMake进行NDK/JNI开发

    Android NDK开发之旅(2):一篇文章搞定android Studio中使用CMake进行NDK/JNI开发 (码字不易,转载请声明出处:http://blog.csdn.NET/andrex ...

  6. android studio绘制统计图,基于Android Studio的饼图账单的设计与开发_毕业论文.doc

    基于Android Studio的饼图账单的设计与开发_毕业论文 Anhui Vocactional & Technical College of Industry & Trade 毕 ...

  7. android studio 顶部导航栏_5分钟学交互:手机交互组件归纳 导航篇

    个人公众号:鱼大大设计铺,ID:ydsjp2018 转载请私信作者,并注明来源公众号:沐风与体验设计 交互设计其实就是根据产品目标和用户目标,选择最合适的导航结构.页面结构.交互控件以及动效.这个任务 ...

  8. iOS导航栏侧滑手势启用/禁用弃用正确姿势

    一般我们如此设置手势侧滑(1.先建一个NAV的子类.然后重写Push方法) - (void)pushViewController:(UIViewController *)viewController ...

  9. Axure中如何快速设计左边导航栏,侧导航栏和顶部导航栏等?

    Axure中如何快速设计侧导航栏和顶部导航栏? 1.下载侧导航栏和顶部导航栏组件 参考<蚂蚁金服 ant design 中下载axure 菜单组件库> 2.导入组件 下载保存为AntDes ...

最新文章

  1. Linux系统开机过程详细分析
  2. 腾讯老照片修复算法开源,细节到头发丝,3种预训练模型可下载 | GitHub热榜
  3. “家电第一股”美的集团迎来转折期?
  4. YARN体系学习笔记
  5. LeetCode(合集)两数之和总结 (1,167,1346)
  6. 选择排序 - python实现详解
  7. 小米10至尊纪念版现身Geekbench跑分:今晚一起见证历史
  8. 分享100佳精美的作品集网站设计案例
  9. 用ansi语法美化你的winrar和win启动界面 【 抄袭至互联网 作者不明】
  10. 2022年计算机二级考试Access数据库程序设计冲刺题及答案
  11. 毕业生登记表特长填写计算机,大学生毕业登记表中有何特长该怎么填啊。
  12. grafana快速搭建数据平台
  13. 如何将 Excel 数据分组后按次序横向排列
  14. Effective Java目录
  15. 工作流 java snaker_snaker工作流引擎
  16. JavaScript Core -- 不可小视的标点符号
  17. 天津专升本应届生学信网学籍在线验证报告查询下载操作步骤
  18. C语言中利用Swap函数交换变量a,b
  19. ctfshow 月饼杯(第二届) 部分WriteUp
  20. Django实现邮箱注册系统

热门文章

  1. 我写了一个脚本,可在“任意”服务器上执行命令!
  2. 昨天晚上,亲眼目睹了我一哥们的崩溃,被空降90后上司鄙视,说他这种人在公司......
  3. 同事问我MySQL怎么递归查询,我懵逼了...
  4. 纯!干!货!2019年19个Docker面试问题和解答!一线大厂必看!
  5. 5个REST API安全准则
  6. 我们是如何使用 PingCode Flow 实现研发自动化管理的?
  7. 项目经理都在用什么项目管理工具?
  8. 推荐8个超实用的神级工具,值得收藏起来!
  9. 最新功能 | 飞书推出“线上办公室”功能,助力企业开启无压力远程实时高效协作
  10. Leangoo思维导图管理用户故事