三星远程开发测试平台

反馈 注册 登录

Flex Mode视频优化

Flex Mode视频播放优化方案

针对宽屏幕左右折叠手机:

l 播放视频页面(无论纵向还是横向),半折手机后,一半屏幕横屏全屏播放视频,一半屏幕展示控制菜单、评论等信息。(使用户秒懂可以横向摆放到桌面上观看)

l 横屏半折状态,折叠水平线上部为上半屏,为播放视频区域;折叠水平线下部为下半屏,为控制区。

image.png


Flex Mode视频通话优化方案

针对宽屏幕左右折叠手机:

l 视频通话页面(无论纵向还是横向),半折手机后,一半屏幕横屏显示头像视频,一半屏幕展示控制菜单等信息,让用户秒懂可以横向摆放、解放双手。

l 横屏半折状态,折叠水平线上部为上半屏,如有多人进行视频通话,可并排展示在上半屏;折叠水平线下部为下半屏,为控制区,方便在下半屏点击操作。

image.png

详细适配指导可参见下文。




适配指导| Flex模式

image.png

一.Flex模式是什么

Flex模式(自适应分屏模式)设计目的是利用多角度自由旋停的特性优化用户体验,当手机处于半折状态时,Flex模式下屏幕页面一分为二,上半屏为预览区,下半屏为操控区。Flex模式与Multi window不同,Flex模式主要专注于单一应用,而Multi window是多个应用分屏。

image.png

对于某些类型的应用来说,Flex模式对用户体验非常友好,优势明显,举例来说:

Ø  观看视频的时候,上半屏播放视频内容,下半屏可以搜索其他视频、刷评论、发点评或弹幕等,用户可以像使用电脑一样,在预览区继续观看视频,在操控区进行留言和其他自己想要的操作;

Ø  对于酷爱煲视频电话粥的朋友们,这个功能简直是解放双手的福音,再也不需要手举手机几个小时到酸麻,也不需要另配一个支架,上半屏显示视频通话,下半屏显示与通话相关的各个按键。视频会议也是一样,手机半折态摆放桌面上,调整好角度,就可以一边从容发言一边做会议记录了;

Ø  拍照或自拍时,半折叠状态放置在台面,上半屏为取景框,下半屏为拍照模式以及摄影功能选项,可自由站立的手机就如相机和三脚架一体机,摄影作品画面更稳定清晰。

image.png

image.png

 

<Galaxy Z Flip>                                <Galaxy Z Fold2 > 

应用可以根据自身的功能玩出更多创意。目前三星内置的相机、相册都支持Flex模式,不少第三方应用合作伙伴也已支持或即将适配支持,我们希望不断加强与本土应用合作伙伴的合作,扩大应用的适配范围。

 

二.Flex模式适配指南

三星与谷歌在折叠屏创新技术方面有着深入合作,Flex模式的从无到有是三星与Google合作共同为Galaxy Z Flip设计的,但并非Galaxy折叠机的独家功能,Google提供的是通用库函数,未来其他厂商的折叠机也可以实现此功能,也就是说,应用开发者实现Flex模式后,未来同类型折叠机就无需重复适配了。现在,三星最新一代折叠机Galaxy Z Fold2手机也已经支持,后续的折叠产品均将继续支持Flex模式,期待未来Flex模式在不同屏幕尺寸的折叠产品上为用户带来更多惊喜。

 

Jetpack Window Manager Library

Flex模式可通过Jetpack最新推出的Window Manager软件包库来实现, Window Manager在2020/2/27发布了的首个版本1.0.0-alpha01,目的是为窗口管理功能提供通用API,帮助应用开发者轻松适配多种形态的设备。初始版本主要针对可折叠设备,未来将扩展到更多显示类型和窗口功能上。

1.     声明dependencies

         在build.gradle 文件中包含 Google 的 Maven 代码库,然后,将所需的库添加到模块的 dependencies 代码块中:
         dependencies {
                    implementation "androidx.window:window:1.0.0-alpha01"
 }
 


2.     主要新增API

Ø  DisplayFeature: 此API可识别设备显示屏的物理特性。

TYPE_FOLD:柔性屏折叠,没有物理间隙

TYPE_HINGE:两块显示屏通过铰链做物理分割

Ø  DeviceState:此API可获取当前手机形态,当前版本定义了以下几种。

POSTURE_CLOSED: 闭合形态

POSTURE_HALF_OPENED:半折形态

POSTURE_OPENED:展开形态

POSTURE_FLIPPED:外翻形态

POSTURE_UNKNOWN

 

详细内容请参考安卓官网链接:https://developer.android.google.cn/jetpack/androidx/releases/window

 

3.     适配流程

1)     在Activity创建时注册设备状态回调函数,回调函数用于监听设备状态的变化,比如半折形态、展开形态、闭合形态等,并在Activity销毁时取消监听。

windowManager.registerDeviceStateChangeCallback(…, deviceStateChangeCallback)
windowManager.unregisterDeviceStateChangeCallback(deviceStateChangeCallback)
 
2)     在onAttachedToWindow中注册布局变化回调函数,回调函数用于监听布局变化,并在onDetachedFromWindow中取消监听。
windowManager.registerLayoutChangeCallback(…, layoutStateChangeCallback)
windowManager.unregisterLayoutChangeCallback(layoutStateChangeCallback)
 


3)     根据当前手机形态调整页面布局,从OPENED到HALF_OPENED,布局调整为上下两部分,从HALF_OPENED到OPENED布局恢复全屏。

 

4.     代码举例

WindowManager Support Library代码样例中包含了三个activities:

Ø  DisplayFeaturesActivity: 显示当前设备状态,向应用窗口报告所有display features及状态更改的日志。

Ø  SplitLayoutActivity: 将用户界面窗口拆分为两个区域,如果没有拆分,或者拆分创建的区域不适合子视图(例如小于minWidth/minHeight),则其处理类似于FrameLayout,将子视图堆叠在一起。

Ø  PresentationActivity: 跟踪可折叠设备状态,并使用Presentation API在外部屏幕上显示了一些内容,目前Galaxy Z Flip未使用这个feature。

 

另外,Flex mode可分为上下折叠和左右折叠,应用需要根据windowLayoutInfo中的 bounds信息判断折叠的位置,根据返回的窗口大小动态的进行布局,切勿固定半折的窗口。

在SplitLayout.kt中进行了示例:

当bounds.left等于0为上下折叠,两个窗口需要垂直布局。

当bounds.top等于0为左右折叠,两个窗口需要水平布局。   

如下图所示,绿色标线即为折叠的位置。

image.png

详细内容请参考链接:https://github.com/android/user-interface-samples/tree/master/WindowManager

 

三.UX设计

以下UX样例仅供参考,请开发者根据自身应用特点设计。

1.    Galaxy Z Fold2

 

1) Camera

image.png

2) Video Call

image.png

3) Video Player

  image.png

 

2.    Galaxy Z Flip

 

1) Camera

image.png

 

2) Video Call

image.png

 

3) Deco Pic

image.png

 

4) Video Player

image.png

 

UX设计建议:

Ø  基本原则:上半屏为浏览区,下半屏为控制区

Ø  可根据需要在上半屏放置功能按钮

Ø  并非所有页面都需要调整

Ø  Pop-up,Toast和文本框需要调整

Ø  可为Flex mode增加使用选项(例如拍照时的拍摄比例选项)

Ø  请不要在中间折叠区域放置可触摸按钮功能

Ø  在播放视频界面,半折手机后,上半屏全屏播放视频,可在下半屏显示控制菜单、评论等信息。

 

四.参考资料

Ø  https://developer.android.google.cn/jetpack/androidx/releases/window

Ø  https://android.googlesource.com/platform/frameworks/support/+/6225ee655392b2e674b6da38895d1bb0f78c5baf

Ø  https://github.com/android/user-interface-samples/tree/master/WindowManager

 

五.联系我们

欢迎发邮件到:rdtpservice@samsung.com

邮件主题:三星Flex模式+APP名 

感谢您的关注和参与!