前言
有时候,我们在运行多个任务时,需要把窗口同时显示在屏幕上,这样操作比较方便,而且可以避免频繁切换窗口的麻烦。折叠屏设备的分屏模式可以让两个应用或者任务同时在一个屏幕下显示,提高工作效率。
一
分屏和悬浮窗
1.支持分屏和悬浮窗模式
应用需要支持resizeable,以允许系统根据用户场景需要触发按分屏或悬浮窗模式启动应用。具体要求可以参考折叠屏开发指导系列①丨屏幕兼容性解读:如何支持不同屏幕的尺寸和像素密度。
Android的多窗口开发指导:
https://developer.android.com/guide/topics/ui/multi-window.html?hl=zh-cn
2.正确获取应用布局资源
1) 在多窗口模式下,应用布局View要以窗口大小进行,不可以按照屏幕大小布局,如果在窗口模式下还是以屏幕的宽高进行布局,会导致应用的图标截断,布局错乱等布局问题。
2) 在多窗口模式下,运行时锁定朝向的方法都是无效的。
(1)setRequestedOrientation() (2)android:screenOrientation
需要通过判断AppWindow的宽高比判断是横屏还是竖屏。
(1)宽:高 >= 1:横屏
(2)宽:高 < 1:竖屏
二
数据拖拽
Android原生的拖拽方案详见:
https://developer.android.com/guide/topics/ui/drag-drop?hl=zh-CN
对于拖拽的实现需要关注权限,拖拽权限方面,应用使用的两个方式提供:
(1)针对对外公开文件,使用媒体库MediaProvier,需要读写外部存储权限。
(2)针对应用隐私数据,使用FileProvider进行文件共享。采用 per-URI 权限机制进行授权:拖出方可以设置 Intent.FLAG_GRANT_READ_URI_PERMISSION 或Intent.FLAG_GRANT_WRITE_URI_PERMISSION,对Intent数据或ClipData中指定的URI授予读/写权限。
URI 实例:
content://com.mydomain.fileprovider/my_images/default_image.jpg
如何提高应用的使用体验,需要开发者的积极跟进与完善。分屏后,屏幕一分为二,两个应用窗口互不干扰,大大提高了屏幕的使用效率。以上内容为折叠屏开发指导系列之分屏和悬浮窗、数据拖拽内容,后续软件绿色联盟会继续发布开发、调测工具的深度解读文章。
End