自动填充框架
画中画模式
API 变更
可下载字体
XML 中的字体
自动调整 TextView 的大小
自适应图标
颜色管理
WebView API 变更
固定快捷方式和小部件
最大屏幕纵横比
多显示器支持
统一的布局外边距和内边距
指针捕获
应用类别
Android TV 启动器
AnimatorSet
输入和导航
视图默认焦点
1.通知
在Android 8.0中,Google 已重新设计通知,以便为管理通知行为和设置提供更轻松和更统一的方式。这些变更包括:
通知渠道
Android 8.0 引入了通知渠道,其允许您为要显示的每种通知类型创建用户可自定义的渠道。用户界面将通知渠道称之为通知类别。要了解如何实现通知渠道的信息,请参阅通知渠道指南。
通知标志
Android 8.0 引入了对在应用启动器图标上显示通知标志的支持。通知标志可反映某个应用是否存在与其关联、并且用户尚未予以清除也未对其采取行动的通知。通知标志也称为通知点。要了解如何调整通知标志,请参阅通知标志指南。
用户可以长按应用启动器图标以查看Android 8.0 中的通知
用户可以长按应用启动器图标以查看 Android 8.0 中的通知
休眠
用户可以将通知置于休眠状态,以便稍后重新显示它。重新显示时通知的重要程度与首次显示时相同。应用可以移除或更新已休眠的通知,但更新休眠的通知并不会使其重新显示。
通知超时
现在,使用 setTimeoutAfter()创建通知时您可以设置超时。您可以使用此函数指定一个持续时间,超过该持续时间后,通知应取消。如果需要,您可以在指定的超时持续时间之前取消通知。
通知设置
Notification.INTENT_CATEGORY_NOTIFICATION_PREFERENCES Intent从通知创建指向应用通知设置的链接时,您可以调用 setSettingsText()来设置要显示的文本。此系统可以提供以下 Extra 数据和 Intent,用于过滤应用必须向用户显示的设置:EXTRA_CHANNEL_ID、NOTIFICATION_TAG 和 NOTIFICATION_ID。
通知清除
系统现在可区分通知是由用户清除,还是由应用移除。要查看清除通知的方式,您应实现 NotificationListenerService类的新 onNotificationRemoved()函数。
通知背景颜色
您现在可以设置和启用通知的背景颜色。只能在用户必须一眼就能看到的持续任务的通知中使用此功能。例如,您可以为与驾车路线或正在进行的通话有关的通知设置背景颜色。您还可以使用 Notification.Builder.setColor() 设置所需的背景颜色。这样做将允许您使用 Notification.Builder.setColorized()启用通知的背景颜色设置。
8 .通知消息样式
现在,使用 MessagingStyle类的通知可在其折叠形式中显示更多内容。对于与消息有关的通知,您应使用MessagingStyle 类。您还可以使用新的 addHistoricMessage()函数,通过向与消息相关的通知添加历史消息为会话提供上下文。
2. 自动填充框架
帐号创建、登录和信用卡交易需要时间并且容易出错。在使用要求执行此类重复性任务的应用时,用户很容易遭受挫折。
Android 8.0通过引入自动填充框架,简化了登录和信用卡表单之类表单的填写工作。在用户选择接受自动填充之后,新老应用都可使用自动填充框架。
您可以采取某些措施,优化您的应用使用此框架的方式。如需了解详细信息,请参阅自动填充框架概览。
3. 画中画模式
Android 8.0 允许以画中画 (PIP)模式启动操作组件。PIP 是一种特殊的多窗口模式,最常用于视频播放。
目前,PIP 模式可用于 Android TV,而Android 8.0 则让该功能可进一步用于其他Android 设备。
当某个 Activity处于 PIP 模式时,它会处于暂停onPause()状态,但仍应继续显示内容。因此,您应确保您的应用在 onPause() 处理程序中进行处理时不会暂停播放。相反,您应在onStop()中暂停播放视频,并在 onStart()中继续播放。如需了解详细信息,请参阅多窗口生命周期。
要指定您的 Activity 可以使用PIP 模式,请在AndroidManifest.xml清单中将 android:supportsPictureInPicture 设置为 true。
注意:
从 Android 8.0 开始,如果您打算在 Android TV 或其他 Android 设备上支持 PIP 模式,则无需将android:resizeableActivity 设置为 true;
只有在您的 Activity 支持其他多窗口模式时,才需要设置 android:resizeableActivity。
4. API 变更
Android 8.0引入一种新的对象PictureInPictureParams,您可以将该对象传递给PIP 函数来指定某个 Activity 在其处于PIP 模式时的行为。此对象还指定了各种属性,例如操作组件的首选纵横比。
现在,在添加画中画中介绍的现有PIP函数可用于所有 Android设备,而不仅限于Android TV。
此外,Android 8.0还提供以下函数来支持PIP模式:
Activity.enterPictureInPictureMode
(PictureInPictureParams args):
将操作组件置于画中画模式。操作组件的纵横比和其他配置设置均由args 指定。如果 args中的任何字段为空,系统将使用您上次调用 Activity.setPictureInPictureParams()时所设置的值。
指定的操作组件被置于屏幕的一角,屏幕剩余部分则被屏幕显示的上一个操作组件填满。进入 PIP 模式的 Activity将进入暂停状态,但仍保持已启动状态。如果用户点按此 PIP 操作组件,系统将显示一个菜单供用户操作,而在操作组件处于 PIP 状态期间,不会理会任何触摸事件。
Activity.setPictureInPictureParams():
更新操作组件的 PIP 配置设置。如果操作组件目前处于PIP 模式,则会更新此设置;如果操作组件的纵横比发生变化,这非常有用。如果操作组件不处于 PIP模式,则会使用这些配置设置,而不会考虑您调用的 enterPictureInPictureMode()函数。
5. 可下载字体
Android 8.0 和Android支持库26 允许您从提供程序应用请求字体,而无需将字体绑定到 APK 中或让APK下载字体。此功能可减小APK大小,提高应用安装成功率,使多个应用可以共享同一种字体。
如需了解有关下载字体的详细信息,请参阅 可下载字体。
6. XML 中的字体
Android 8.0 推出一项新功能,即XML 中的字体,允许您使用字体作为资源。这意味着,不再需要以资产的形式捆绑字体。字体在 R文件中编译,并且作为一种资源,可自动用于系统。然后,您可以利用一种新的资源类型 font 来访问这些字体。
在运行API版本 14及更高版本的设备中,支持库 26 对此功能提供完全支持。
如需了解有关以资源形式使用字体以及检索系统字体有关的详细信息,请参阅 XML 中的字体
7. 自动调整 TextView 的大小
Android 8.0允许您根据 TextView 的大小自动设置文本展开或收缩的大小。这意味着,在不同屏幕上优化文本大小或者优化包含动态内容的文本大小比以往简单多了。如需了解有关如何在 Android 8.0 中自动调整 TextView 的大小的详细信息,请参阅自动调整TextView的大小。
8. 自适应图标
Android 8.0 引入自适应启动器图标。自适应图标支持视觉效果,可在不同设备型号上显示为各种不同的形状。要了解如何创建自适应图标,请参阅自适应图标预览功能指南
9. 颜色管理
图像应用的Android开发者现在可以利用支持广色域彩色显示的新设备。要显示广色域图像,应用需要在其清单(每个操作组件)中启用一个标志,并加载具有嵌入的广域彩色配置文件(AdobeRGB、Pro Photo RGB、DCI-P3 等)的位图。
10. WebView API 变更
Android 8.0提供多种API,帮助您管理在应用中显示网页内容的 WebView 对象。这些 API 可增强应用的稳定性和安全性,它们包括:
Version API
Google SafeBrowsing API
Termination Handle API
Renderer Importance API
要详细了解如何这些 API,请参阅管理 WebView。
11. 固定快捷方式和小部件
Android 8.0 引入了快捷方式和微件的应用内固定功能。在您的应用中,您可以根据用户权限为支持的启动器Launcher创建固定的快捷方式和小部件。
如需了解详细信息,请参阅固定快捷方式和微件预览功能指南。
12. 最大屏幕纵横比
以 Android 7.1(API 级别 25)或更低版本为目标平台的应用默认的最大屏幕纵横比为 1.86。针对 Android 8.0或更高版本的应用没有默认的最大纵横比。如果您的应用需要设置最大纵横比,请使用定义您的操作组件的清单文件中的maxAspectRatio属性
13.多显示器支持
从 Android 8.0开始,此平台为多显示器提供增强的支持。如果 Activity 支持多窗口模式,并且在具有多显示器的设备上运行,则用户可以将 Activity从一个显示器移动到另一个显示器。当应用启动 Activity 时,此应用可指定 Activity 应在哪个显示器上运行。
注:
如果 Activity 支持多窗口模式,则 Android 8.0 将为该 Activity 自动启用多显示器支持。您应测试您的应用,确保它在多显示器环境下可正常运行。
每次只有一个 Activity可以处于继续状态,即使此应用具有多个显示器。具有焦点的Activity将处于继续状态,所有其他可见的Activity均暂停,但不会停止。如需了解有关当多个 Activity 可见时活动生命周期的详细信息,请参阅多窗口生命周期。
当用户将Activity 从一个显示器移动到另一个显示器时,系统将调整 Activity 大小,并根据需要发起运行时变更。您的 Activity 可以自行处理配置变更,或允许系统销毁包含该Activity的进程,并以新的尺寸重新创建它。如需了解详细信息,请参阅处理配置变更。
ActivityOptions
提供两个新函数以支持多个显示器:
setLaunchDisplayId()
指定 Activity 在启动后应显示在哪个显示器上。
getLaunchDisplayId()
返回操作组件的当前启动显示器。
对 adb shell进行了扩展,以支持多个显示器。shell start 命令现在可用于启动操作组件,并指定操作组件的目标显示器:
adb shell start
14. 统一的布局外边距和内边距
Android 8.0让您可以更轻松地指定View元素的对边使用相同外边距和内边距的情形。具体来说,您现在可以在布局XML 文件中使用以下属性:
layout_marginVertical,同时定义 layout_marginTop和 layout_marginBottom。
layout_marginHorizontal,同时定义 layout_marginLeft 和 layout_marginRight。
paddingVertical,同时定义 paddingTop和 paddingBottom。
paddingHorizontal,同时定义 paddingLeft和paddingRight。
注:
15. 指针捕获
某些应用(例如游戏、远程桌面和虚拟化客户端)将大大受益于鼠标指针控制。指针捕获是 Android 8.0中的一项新功能,可以通过将所有鼠标事件传递到您的应用中焦点视图的方式提供此类控制。
从 Android 8.0 开始,您的应用中的View 可以请求指针捕获并定义一个侦听器来处理捕获的指针事件。鼠标指针在此模式下将隐藏。如果不再需要鼠标信息,该视图可以释放指针捕获。系统也可以在视图丢失焦点时(例如,当用户打开另一个应用时)释放指针捕获。
如需了解有关如何在您的应用中使用此功能的信息,请参阅指针捕获
16. 应用类别
17. Android TV 启动器
Android 8.0 添加了一种以内容为中心的全新 Android TV主屏幕体验,支持 Android TV 模拟器和 Nexus Player Android 8.0设备映像。新的主屏幕在对应于频道的行中组织视频内容,这些频道在系统上通过应用填充各个节目。应用可以发布多个频道,用户可以配置他们希望在主屏幕上看到哪些频道。Android TV也包含一个 Watch Next 行,此行根据用户的观看习惯从应用填充节目。应用也可以提供视频预览,这些预览会在用户聚焦到节目时自动播放。用于填充频道和节目的API属于TvProvider API,这些 API 以 Android 支持库模块的形式随Android 8.0分发。
18. AnimatorSet
从Android 8.0开始,AnimatorSet API 现在支持寻道和倒播功能。寻道功能允许您将动画的位置设置为指定的时间点处。如果您的应用包含可撤消的操作的动画,倒播功能会很有用。现在,您不必定义两组独立的动画,而只需反向播放同一组动画。
19. 输入和导航
键盘导航键区
包含 5 个键区的操作组件
如果您的应用中,某个操作组件使用一种复杂的视图层次结构(如上图 所示),可考虑将多组界面元素组成一个键区,简化键盘导航这些元素的操作。用户可以在Chromebook设备上按Meta+Tab或Search+Tab,在不同键区之间导航。键区的一些范例包括:侧面板、导航栏、主内容区域和可能包含多个子元素的元素。
要将一个 View或 ViewGroup元素设置为一个键区,请在元素的布局 XML 文件中将 android:keyboardNavigationCluster 属性设置为 true,或者将 true 传递至应用界面逻辑中的 setKeyboardNavigationCluster()。
注:
键区不能嵌套,不过,非嵌套键区可以显示在层次结构的不同层级。如果您尝试嵌套键区,框架仅会将最顶层的 ViewGroup元素视为键区
在具有触摸屏的设备中,您可以将某个键区指定的ViewGroup对象的 android:touchscreenBlocksFocus元素设置为true,仅允许从键区导航进入和离开此键区。如果您将此配置应用于某个键区,用户将无法使用Tab键或箭头键导航进入或离开此键区,而是必须按键区导航键盘组合键
20. 视图默认焦点
在Android 8.0中,您可以指定在(重新)创建的操作组件继续运行并且用户按下键盘导航键(例如 Tab键)之后应接收焦点的 View。要应用“设为默认焦点”设置,请在包含界面元素的布局 XML文件中将View元素的 android:focusedByDefault 属性设置为true,或者将true传递至应用界面逻辑中的 setFocusedByDefault()。
用户评论
说真的,自从升了Android 8.0 Oreo以后,感觉手机流畅了很多!没有那些经常弹窗打扰我的App运行也更顺畅了,而且电池续航时间比以前延长了好几个小时,真是厉害!
有11位网友表示赞同!
刚入手安卓机就升级到8.0 oreo系统,体验还不错啊。通知栏的变化确实很友好,图片、视频直接在通知就能预览,不用点开再看,效率提高了不少!而且夜间模式也很方便,晚上睡觉前用手机眼睛就不会那么疲劳了。
有13位网友表示赞同!
升级 Android 8.0 Oreo 后,感觉系统启动速度更快了,反应也更加灵敏。 但有些常用的功能却消失了,比如之前那个分屏的快捷方式不见了,这个挺倒霉的。
有20位网友表示赞同!
Android总是喜欢更改菜单、图标和功能,这次从7.x跳到8.0 Oreo, 我一开始还适应不了,操作习惯被打破了,但慢慢也就习惯了。总的来说功能还是蛮齐全的,就看个人喜好是否接受新界面设计吧!
有9位网友表示赞同!
体验Android 8.0 Oreo后,最大的改变是通知栏和多任务管理的功能提升。以前的通知经常是一堆乱糟糟的,现在分类整理更清晰明确了,而且在分割窗口的多任务界面也更容易操作不同应用了。
有12位网友表示赞同!
个人觉得升级到 Android 8.0 Oreo 体验很棒!图片压缩功能简直太棒了,直接上传照片速度快了不少!再也不用担心手机内存不足的问题了。<br><br>
有6位网友表示赞同!
我用的是安卓6的机器,官方提示我已经无法升级到Android 9。只能更新到8.0 Oreo,体验上比以前好很多了,反应更快更流畅,但一些新的功能和设计还需要慢慢适应。
有11位网友表示赞同!
Android 8.0 oreo的应用图标设计变化很大,我个人不太喜欢这种圆角扁平化的风格,看着有点像玩具。希望未来版本可以增加更多的可定制化选项,让我们自己调整图标样式!
有11位网友表示赞同!
我一直觉得安卓机系统的更新速度很慢,从7.x跳到8.0 Oreo 感觉变化不大,很多功能还是和之前类似,只是界面美了一点儿,没有带来太多惊喜。
有12位网友表示赞同!
升级Android 8.0 Oreo后,手机卡顿的问题消失了,系统流畅度明显提升!游戏加载速度也加快了很多,玩大型手游更畅快了,真值回票!
有12位网友表示赞同!
其实个人觉得安卓系统的更新每次都感觉不太大改变。从Android 7.x到8.0 oreo, 有的小功能改善不错,比如通知管理和电池续航时间,但还是期待未来的系统能带来更加创新性的体验!
有9位网友表示赞同!
对于我来说,android系统已经足够好用了,升到最新版本主要是为了保持设备的性能更佳状态。 8.0 Oreo的更新主要体现在系统安全性、流畅度方面,功能上变化不大也还好。对很多用户来说,也许就是个小小的升级而已。
有6位网友表示赞同!
感觉每个安卓系统的升级都像是在玩文字游戏,名字换起来好像就很高科技的感觉了。每次升级后最大的感受还是电池续航时间缩短了很多,不知道谷歌是为什么啊!
有14位网友表示赞同!
Android 8.0 oreo的通知管理功能确实很实用的,可以自定义不同应用的消息分类和优先级。尤其是在工作忙碌的时候,可以快速屏蔽不重要的信息通知避免被打扰,提高效率!
有13位网友表示赞同!
使用 Android 8 Oreo 后,发现拍照效果提升了很多,细节更加清晰,颜色也更真实还原了场景。对于喜欢拍照的爱好者来说是个很不错的升级选择。
有18位网友表示赞同!
Android 系统一直以流畅性和开放性著称,8.0 Oreo并没有改变这个特点。 新功能和设计虽然不会让人眼前一亮,但整体体验还是令人满意,尤其是针对游戏优化提升了帧率,提升了游戏画质和流暢度。
有9位网友表示赞同!