Android8.0新特性和API

本文翻译自google官方文档,原文链接:https://developer.android.com/about/versions/oreo/android-8.0.html

Android 8.0(API level 26)位用户和开发者引入了一系列新特性和能力。本文将重点介绍针对开发者的新功能。

用户体验

画中画模式

Android 8.0 允许Activity以画中画模式启动。PIP是一种特殊的多屏模式,主要用于视频播放。PIP模式在Android TV中已经存在;Android 8.0将这一特性移植到了其它的Android设备上。

当一个Activity处于画中画模式,它将处于pause状态,但是要继续展示内容。相反,你应该在onStop()中暂停播放,在onStart()中恢复播放。

为了使你的Activity支持PIP模式,在manifest中把android:supportsPictureInPicture设置为true。(从8.0开始,不需要设置这个属性,不管是在Android TV后者别的属性;只有当你的Activity支持其它的多屏模式时,才需要设置这个属性)。

Android 8.0引入了一个新的对象,PictureInPictureParams, 传入PIP方法总,用来指明当你的Activity处于PIP模式时的行为。这个对象指明了一些列属性,比如Activity最佳的宽高比。

已经存在的PIP方法可以用于所有的Android设备,不仅仅是Android TV。除此之外,Android 8.0引入了如下这些方法支持PIP模式:

  • Activity.enterPictureInPictureMode(PictureInPictureParams args):使Activity进入PIP模式。宽高比和其它配置由args指定。如果args中的任何一个域为空,系统将会使用你最近一次调用Activity.setPictureInPictureParams()所设置的值。指定的Activity将会位于屏幕的一角。屏幕的其余部分将会被之前的Activity覆盖。进入PIP模式的Activity将处于pause状态,但仍然启动。如果用户点击处于PIP模式的Activity,系统展示一个菜单供用户交互;当Activity处于PIP模式,点击事件将不能传递到该Activity。

通知

在Android8.0, 我们重新设计了通知,提供了更建议的并且更趋于一致的方法来管理通知的行为和设置。这些变化包括:

通知频道:Android8.0引入了通知频道的概念,你可以为每一种你想要展示的通知创建一个定制化的频道。与通知频道相关的用户接口是通知分类。想要学习如何实现通知频道,看这里: Managing notification channels.

通知点缀:Android支持在应用图标上显示圆点,或者徽章。通知圆点用来提示存在但还没有被用户处理的通知。想要学习如何使用通知圆点,点击这里:Notification badges。

休眠:用户可以休眠通知,这可以让通知消失一段特定的时间,然后再次出现。再次出现的通知和之前的具有相同的级别和重要等级。用户可以移除或者更新一个休眠的通知。但是更新一个休闲的通知并不会让它出现。

通知超时:创建一个通知时可以使用setTimeoutAfter()设置超时。你可以用这个方法指定一个特定的周期,超过这个时间段之后通知将被取消。你也可以在指定的时间到达之前显示的取消这个通知。

通知设置:当你使用Notification.INTENT_CATEGORY_NOTIFICATION_PREFERENCES intent来创建一个从通知指向你的应用通知设置的链接的时候,你可以使用setSettingsText()来设置显示的文本。系统可以提供下面的extras给这个intent,用来过滤哪些是你的app必须显示的:EXTRA_CHANNEL_IDNOTIFICATION_TAG,和NOTIFICATION_ID。

通知取消:用户可以手动取消通知,app也可以通过代码达到同样的效果。你可以通过实现NotificationListenerService类中的onNotificationRemoved()方法,来指定何时以及为什么一个通知被取消。

背景色:可以设置通知的背景色。你应该只在需要引起用户注意的重要的通知中使用这一特性。比如,可以用于和驾驶方向,电话等相关的通知。你可以通过setColor()设置背景色。你可以通过setColorized()来使能背景色的设置。

消息样式:在Android8.0,通知可以使用MessingStyle类在折叠样式中展示更多的内容。你可以将MessingStyle用于与消息相关的通知。你也可以通过使用addHistoricMessage()来为对话提供上下文,通过将历史消息加入到消息相关的通知中。

自动填充框架

创建账号,登录,信用卡交易等耗费时间,而且容易出错。用户对经常要求这种重复操作的app将会很容易产生厌倦。

Android8.0(API26)通过自动填充框架,使得填写表格,比如登录,或者信用卡表格,变得更容易。如果用户选择了自动填充,已有的和新app都可以使用自动填充框架。

通过一些简单步骤就可以使用自动填充框架。要获取更多信息,点击这里Autofill Framework Overview

可下载的字体

Android8.0(API level 26)和Support Library 26允许你从一个提供者应用请求字体,而不是将字体和APK绑定,或者,APK可以下载字体。这可以减小你的apk的大小,并且允许多个app共享同一份字体。

要获得下载字体的更多信息,看这里:Downloadable Fonts

XML中字体

Android8.0(API level 26)引入了一个新特性,xml中的字体,允许将字体作为资源。这意味着,将不需要将字体绑定为assets。字体将被编译进R文件,并且被系统自动接受为资源。然后你可以通过新的资源类型,font,来访问这些字体。

Support library 26为那些运行运行api14及以上版本的设备提供了这一特性的完整支持。

要获取更多信息,关于xml中的字体,以及恢复系统字体,请访问这里:Fonts in XML

自动尺寸的TextView

Android8.0(API level 26) 允许你这样设置你的文本,根据TextView的尺寸自动的放大或者缩小文本。这意味着,针对不同尺寸的屏幕,或者动态的内容,进行优化将会变得很容易。获取更多信息,请点击这里:Autosizing TextView

自适应图标

Android引入了自适应启动图标。自适应图标支持可视化效果,并且可以根据不同的设备model,显示一系列不同的形状。要学习如何创建自适应图标,点击这里:Adaptive Icons

颜色管理

图像应用的开发者现在可以利用新设备去展示更广的色域。为了展示宽色域图像,app需要在manifest中打开一个flag,并且以嵌入的广域颜色配置加载bitmap(AdobeRGB,Pro Photo RGB,DCI=P3,等等)。

Webview API

Android 8.0提供了一些新的API来管理WebView。这些API改进了应用的稳定性和安全性,包括:

版本API

Google安全浏览API

中止处理API

渲染器的重要性API

要学习如何使用这些API, 点击这里:Managing WebViews

WebView类现在包含了一个安全浏览API来加强浏览的安全性。要获取更多信息,看这里: Google Safe Browsing API

填充快捷方式和小部件

Android8.0引入了应用内的快捷方式和小部件填充。在应用内部,可以为支持的启动器添加快捷方式和小部件,这受制于用户权限。

获取更多信息,看这里:Pinning Shortcuts and Widgets

最大屏幕宽高比

android 8.0(API 26)改变了配置app最大宽高比的方式。

首先,8.0引入了maxAspectRatio这个属性,可以用来设置app的最大宽高比。除此之外,在8.0及以上系统里,app的最大宽高比将是运行app的设备的宽高比。

要获取更多信息以及如何设置宽高比,请访问这里Supporting Multiple Screens

多屏显示支持

从8.0开始,平台加强了对多屏显示的支持。如果一个activity支持多窗口显示,并且运行在一个多显示器的设备上,用户可以将这个activity从一个显示器移动到另一个显示器。当一个app启动了一个activity,app可以决定这个activity应该在那个显示器上运行。

如果一个activity支持多窗口显示,那么8.0系统自动为它提供多显示器支持。你应该测试你的应用,看它是不是能够正常的运行在多显示器环境中。

只能有一个activity处于resumed状态,即使app支持多显示器模式。获取焦点的activity将处于resumed状态,所有其它可见的activity处于pause的状态,但不是stopped。要获取关于多个activity可见状态下activity的声明周期,看这里Multi-Window Lifecycle

当用户将activity从一个显示器移动到另一个显示器,系统会调整activity的大小并作出其它必要的运行时调整。activity可以自己处理这些改变,或者让系统销毁activity所在的进程,再基于新的尺寸构建一个新的进程。要获取更多信息,看这里Handling Configuration Changes

ActivityOptions提供了两个新的方法来支持多显示器:

setLaunchDisplayId(): 设置当activity启动时,它应该运行在哪一个显示器上。

getLaunchDisplayId():返回activity当前所在的显示器。

adb shell 也已经扩展来支持多显示器。shell start命令可以用来启动一个activity,并指定activity运行的显示器:

adb shell start <activity_name> --display <display_id>

统一的布局margin和padding

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值