折叠屏手机自发布以来,就成为业内关注的焦点。其创新的屏幕形态给应用带来了很多创新玩法。如何让自己的App在折叠屏手机获得1 1大于2的效果?
在本文中,微博技术专家将从适配场景演示、实现方案解析、未来适配规划三个维度为大家带来微博在折叠屏上的适配经验分享。
适配场景演示
针对折叠屏手机存在较多的分屏或多窗口场景,微博适配了折叠屏多窗口拖拽的特性。可以将第三方应用的文字、图片、视频等媒介直接拖拽到微博发布器进行发布,省略了复制粘贴等复杂的步骤。具体演示如下视频所示。
实现方案解析
2.1 分屏拖拽实现设计的API
分屏模式拖拽主要涉及到下图中的四个API,分别对应拖拽数据的方法、类、创建拖拽阴影和监听回调获取数据等功能。微博发布器主要扮演的是拖拽接收方的角色,所以主要用到的是android.view.View.OnDragListener这个API。
2.2 拖出实现
以拖拽图片的demo为例,我们首先需要创建一个新的ClipDate。将图片类型封装到clipDescription,然后将图片文件路径封装到FileProvider前置的Uri,通过uri创建ClipDate.item,最后将ClipDate进行封装;第二步再实例化一个拖动阴影builder,最后将封装好的Clipdate、builder、flag传入到view.startDragAndDrop方法中,拖出实现已完成。具体代码可以参考下图。
在这里,我们需要注意:
1) 必须设置DRAG_FLAG_GlOBAL标记,用户可以将数据拖动到其他应用。
2)必须同时设置DRAG_FLAG_GLOBAL_URI_READ和DRAG_FLAG_GLOBAL_URI_WRITE标记,或者设置其中任何一项,具体取决于对目标应用具有的数据读写权限。
3) 由于安卓是从N版本开始支持多窗口应用见拖拽数据,所以一定要做SDKVERSION版本的判断。
2.3 拖入实现
在拖入实现中,主要用到的是onDragListenner API,重写了里面的onDrag方法,来接收拖拽过来的数据。具体代码参考如下:
在这里,同样需要注意以下几点:
1) 做SDKVERSION版本判断。
2) 在处理用户拖入其他数据之前要去重置权限,并与前面的flag设置的权限保持一致,否则可能导致文件接收失败。
3) 接收的数据可能包含多个类型的文件,但是只返回了一个文件类型,就可能导致文件的丢失。因此在这里需要做一个兼容处理,通过uri来判断文件类型。
2.4 适配中遇到的问题
在前面的分享中,我们也提到一些需要注意的点。经过总结,在适配中遇到比较多的问题及其解决方法如下。
后期拖拽功能规划
目前,微博已经支持第三方应用的文字、图片、视频等内容以拖拽的形式分享到微博。后期,我们将重点跟进微博拖拽分享功能,实现微博的图片和文字以拖拽的形式分享到第三方。
以上就是本期分享的全部内容,你还希望哪些酷炫的交互设计在折叠屏设备上实现呢?
· END ·