139邮箱Android端折叠屏设备适配

2021-08-23 13:06:26丁小波王朝鹏陈禹樵
现代计算机 2021年20期
关键词:分屏视界控件

丁小波,王朝鹏,陈禹樵

(中移互联网有限公司云产品事业部,广州510000)

0 引言

(1)研究内容

课题的研究内容分为:折叠屏的UI适配、折叠屏的邮件浏览、折叠屏的文件拖拽,从这三部分内容入手,通过对折叠屏特性的熟悉和了解,对139邮箱进行针对性的改造,使其能够在折叠屏手机上流畅运行并且实现特殊场景的需求。

对于折叠屏的UI适配,需要解决的问题在于折叠屏在常规和打开两种状态下,139邮箱的界面拉伸问题。需要对应用的窗口宽度进行实时监测,根据应用的窗口宽度,动态改变需要动态计算的控件长宽,使其能够符合正确的比例而不会变形。另外,应用的上下改变高度时,该场景下,指定绝对位置的控件将导致错位,需要解决此类场景的控件位置出错问题。

对于折叠屏的邮件浏览,需要实现的效果为,折叠屏左边屏幕为邮件列表,折叠屏右边屏幕为邮件详情,通过左边点击不同的邮件,可即时在右边看到邮件详情。该效果的实现需要用到“平行视界”的技术,通过对不同界面的配置,以及窗口比例的调整,启动模式的调整,从而实现折叠屏的邮件浏览。

对于折叠屏的文件拖拽,需要基于139邮箱支持分屏的基础上实现。第三方应用需要自身实现拖出事件,并在拖出事件中进行数据的封装和传输。139邮箱在能够实现分屏之后,在指定Activity内指定某个控件,捕获外界的拖入事件,并在事件中取出拖出方封装好的数据,进行界面的渲染以及后续数据的使用。

(2)研究目的和意义

通过对139邮箱Android端折叠屏适配的研究,目的和意义在于:①研究折叠屏设备特性和功能特性;②使139邮箱适配折叠屏手机,使其能在折叠屏手机上正常且流畅运行,满足折叠屏手机的功能需求;③总结归纳一套适用于大部分折叠屏手机的 Android端应用适配方案,节约适配成本。

1 折叠屏手机适配

1.1 应用多窗口适配

1.1.1 多窗口模式介绍

Android N支持多窗口模式,或者叫分屏模式,即在屏幕上可以同时显示多个窗口,详见图1。

图1 多窗口模式

在手机模式下,两个应用可以并排或者上下同时显示,屏幕上半部分的窗口是系统的Clock应用,下半部分是系统设置功能。用户可以拖动两个应用之间的分界线改变两个窗口的大小,放大其中一个应用,同时缩小另一个应用[1]。

在分屏模式下,各个窗口的应用都可以正常运行,但是只能有一个窗口获得焦点,而另外的窗口则属于暂停状态。

Android N用户可以通过以下方式切换到多窗口模式:

用户打开Overview屏幕并长按Activity标题,可以拖动该Activity至屏幕突出显示的区域,使Activity进入多窗口模式。

用户长按Overview按钮,设备上当前的Activity将进入多窗口模式,同时将打开Overview屏幕,用户可在该屏幕中选择要共享屏幕的另一个Activity。

用户可以在两个Activity共享屏幕的同时在这两个Activity之间拖放数据。默认情况下,Android N的Activity都是开启多窗口模式的。在Nexus 6P手机上,分屏模式的启动和退出是长按多任务虚拟按键。

1.1.2 139邮箱多窗口配置

在项目的manifests中,在application下,配置:

1.1.3 139邮箱多窗口异常处理

多窗口适配后,应用在切换为多窗口状态以及调整窗口大小时,会触发当前Activity的生命周期,导致应用重启的假象,需要对这类异常进行处理,处理方案为,在manifests中,对应用的每个Activity均进行以下配置,可防止Activity重走生命周期。

1.1.4 139邮箱布局适配

多窗口适配后,应用在调整窗口大小时,布局会相对应的变化,应用所在的窗口高度和宽度也会变化,需要对控件进行动态适配。以下是适配情况:

(1)控件相对位置。需指定控件的相对位置,而非绝对位置,如果固定控件的绝对位置,在应用窗口拉伸时,会有控件重叠的问题。以下代码为绝对位置布局,具体效果如图2所示。

图2 控件绝对位置布局重叠问题

指定控件相对位置后,当窗口尺寸调整时,也能够正常显示,以下代码为相对位置布局,具体效果见图3。

图3 控件相对位置正常显示

(2)动态计算控件大小。通过监听onConfiguration Changed方法,从而监控窗口大小的改变进而改变布局。

从Android API可以得知android:onConfiguration Changed实际对应的是Activity里的onConfiguration Changed()方法。在AndroidManifest.xml中添加该方法的含义是表示在改变屏幕方向、大小,弹出软件盘和隐藏软键盘时,不需要再去执行onCreate()方法,而是直接执行onConfigurationChanged()。如果不声明此段代码,按照Activity的生命周期,都会去执行一次onCreate()方法,而onCreate()方法通常会在显示之前做一些初始化工作。所以如果改变屏幕方向这样的操作都去执行onCreate()方法,就有可能造成重复的初始化,降低程序效率是必然的了,而且更有可能因为重复的初始化而导致数据的丢失。

在该方法中,需要重新获取当前应用窗口宽度的大小,对需要动态计算宽高的控件进行再次计算并且绘制。这里需要注意的是,获取的应当是当前应用的窗口大小,而非屏幕的大小,因为折叠屏手机在折叠以及展开时,宽度是会变化的。

1.2 139邮箱平行视界适配

平行视界,是华为首创的应用内分屏功能,目前已经在华为平板M6与华为MatePad Pro上发布。和Android系统分屏提供是两个应用间的分屏不同的是,它提供应用内两个窗口可以在屏幕上左右同时显示的功能,从而使Android平板的使用体验有了革命性突破。

●139邮箱平行视界适配步骤

139邮箱对于折叠屏手机的平行视界适配,需要达到如图4的效果,左边展示邮件列表,右边展示邮件详情,并且可通过左边切换邮件时,同步在右边展示邮件。

图4 139邮箱平行视界效果

平行视界的配置,需要通过JSON配置文件完成,常规地指定应用包名,平行视界版本等常规参数外,最重要的是配置起始页面以及视界比例,详见以下代码:

其中,以下这段代码用于配置平行视界起始页,MessageList为邮件列表页,*代表从该页面跳转至任一页面时,进入平行视界模式。

以下这段代码用于配置平行视界的左右比例,可通过比例的调整,达到想要显示的效果。

1.3 139邮箱文件拖拽适配

1.3.1 文件拖拽需求介绍

在139邮箱写信页,进入应用多窗口模式后,需支持备忘录、图库以及文件管理器中的文字、文件和图片通过拖拽的方式形成附件,随后跟随邮件一起发送,从而减少用户操作步骤,简化操作过程。

1.3.2 文件拖拽适配

在写信页,指定某个控件,这里选择的是整个写信页作为文件接收容器,监听该控件的onDrag方法,在此方法中,监听和接收由外部应用传入的数据,接收到数据后,对其进行数据处理并展示在界面上即可。

需要注意的是,文件传入时,是以URI的形式,需要将URI转成URL,转换过程中,需要对文件类型进行区分。常见的有以下两种类型:

①file://开头,可直接转成Url,转换方法为:uri.get-Path();

②以content://开头,再进行细分;

如content://media/extenral/images/media/17766

以下是针对不同类型的URI的转换方法:

2 结语

随着移动互联网的发展,139邮箱的用户数量也在持续稳步地增长,随之用户需求也在不断增加与完善。折叠屏手机也开始走入大众视野,市场占有率已经形成规模,此次139邮箱对折叠屏手机的适配具有重要意义。

本文对折叠屏技术、折叠屏适配特性、Android技术等进行了介绍,在此技术基础上,对139邮箱在折叠屏手机上的适配方案进行了研究和输出,提出了针对折叠屏手机的包括多窗口适配、平行视界适配、文件拖拽等适配方案,以及在适配过程中遇到的困难与解决方法。

本次折叠屏适配工作共耗时两个月完成,期间经历了折叠屏系统的调查和研究,139邮箱应用的特性研发,折叠屏适配的可行性调研,以及后续的适配工作和测试、修复工作。由于折叠屏适配目前技术空白,缺少可参考的方案,因此在摸索过程中遇到了很多困难和障碍。好在最后都一一解决了,并且形成了一套较为完整的适配方案可供他人借鉴。总的来说,能够完成139邮箱Android端折叠屏的适配,无论对于技术还是对于平台,都具有良性的促进作用。139邮箱此次在折叠屏手机上的适配方案,具有广泛的代表意义。其对后续其他应用适配折叠屏提供了一套符合行业标准的参照模板,能够极大地节约应用适配时间,降低应用适配的难度,进而推动折叠屏手机的创新与发展。

猜你喜欢
分屏视界控件
基于FPGA的8K分屏器设计
同屏显示更方便 随意调整程序窗口的大小
电脑爱好者(2021年1期)2021-01-13 05:18:20
关于.net控件数组的探讨
软件(2018年7期)2018-08-13 09:44:42
基于Java语言开发手机软件控制折叠手机研究
机视界
强制所有应用使用分屏功能
电脑爱好者(2017年6期)2017-05-04 22:28:46
视界
海外文摘(2016年8期)2016-08-16 16:58:23
视界
新民周刊(2016年23期)2016-06-20 10:22:06
视界
新民周刊(2014年15期)2014-04-29 21:54:48
就这样玩会VBA中常见的自定义控件
电脑迷(2012年24期)2012-04-29 00:44:03