androidn进入分屏代码分析_是时候学习Android分屏开发了

androidn进⼊分屏代码分析_是时候学习Android分屏开发了今年Google发布了Android N,Android N新增了不少功能,最受关注的⾃然就是分屏了。
这⼀功能对国内的很多⼿机⽤户并不陌⽣,其实很多第三⽅系统早已经实现了这⼀功能,如EMUI,Flyme等等。
分屏操作
淀粉牙签
在我的⼿机中,就可以⼀边看视频,⼀边浏览简书。Android N分屏功能的更新,似乎并不会对我国第三⽅Android系统带来多⼤的影响。毕竟⼚商有⾃⼰实现这⼀功能的套路。
pds虹吸排水系统然⽽,⾕歌反应的“缓慢”真的没有价值吗?其实不是的,Android N新增的功能是为其他第三⽅系统作出⼀个“标杆”。
这⾥举个例⼦,⾸先是分屏多任务,如今不同Android ROM实现该功能的⽅式不⼀,⽽且对软件的兼容也⼤有不同,所以体验也就可能差天共地(不能达到该有的标准),⽽Android N新增分屏多任务的⽀持,除了让第三⽅ROM开发商可以参照这个“模板”进⾏⼆次开发之外,软件开发⼈员也能根据Android N分屏多任务功能的实现⽅式去进⾏软件的开发。从⽽⼤⼤减少了⾃⼰摸索的时间,加快开发速度,由此⽀持该功能的软件会更多,兼容性也会更好。
分屏模式在Android电视中就变成了更为强⼤的画中画模式,终于可以⼀边看⽐赛直播,⼀边追电视剧了。
画中画
如何分屏呢
如果您的应⽤是使⽤ N Preview SDK 构建的,且未禁⽤多窗⼝⽀持,则应⽤默认⽀持分屏操作。
[代码]xml代码:
⽤户可以通过以下⽅式切换到多窗⼝模式:
若⽤户打开最近任务列表(Overview 屏幕),并长按 Activity 标题,则可以拖动该 Activity ⾄屏幕突出显⽰的区域,使 Activity 进⼊多窗⼝模式。
若⽤户长按菜单按键(Overview 按钮),设备上的当前 Activity 将进⼊多窗⼝模式,同时将打开 最近任务列表(Overview 屏幕),⽤户可在该屏幕中选择要共享屏幕的另⼀个 Activity。
⽤户居然还可以在两个 Activity 共享屏幕的同时在这两个 Activity 之间拖放数据 (在此之前,⽤户只能在⼀个 Activity 内部拖放数据)。想想以后微博的图⽚直接拖到朋友圈中是不是很屌啊。
多窗⼝⽣命周期
还需要注意的是多窗⼝不会影响Activity的⽣命周期。
在多窗⼝模式中,在指定时间只有最近与⽤户交互过的 Activity 为活动状态。 该 Activity 将被视为顶级 Activity。 所有其他 Activity 虽然可见,但均处于暂停状态。 但是,这些已暂停但可见的 Activity 在系统中享有⽐不可见 Activity 更⾼的优先级。 如果⽤户与其中⼀个暂停的 Activity 交互,该 Activity 将恢复,⽽之前的顶级 Activity 将暂停。
左右摇头摆
在多窗⼝模式中,⽤户仍可以看到处于暂停状态的应⽤。 应⽤在暂停状态下可能仍需要继续其操作。
例如,处于暂停模式但可见的视频播放应⽤应继续显⽰视频。因此,我们建议播放视频的 Activity 不要在 onPause()⽅法中暂停视频,应在onStop()暂停视频播放,并在 onStart()中恢复视频播放。
⽤户使⽤多窗⼝模式显⽰应⽤时,系统将通知 Activity 发⽣配置变更。 该变更与系统通知应⽤设备从纵向模式切换到横向模式时的
Activity ⽣命周期影响基本相同,但设备不仅仅是交换尺⼨,⽽是会变更尺⼨。您的 Activity 可以⾃⾏处理配置变更,或允许系统销毁Activity,并以新的尺⼨重新创建该 Activity。
给Activity加上如下配置可以保证切换成多屏模式或者画中画模式时Activity不会销毁重建。
[代码]xml代码:
针对多窗⼝进⾏配置
在清单⽂件的 或 节点中设置该属性,启⽤或禁⽤多窗⼝显⽰:
[代码]xml代码:
如果该属性设置为 true,Activity 将能以分屏和⾃由形状模式启动。 如果此属性设置为 false,Activity 将不⽀持多窗⼝模式。 如果该值为 false,且⽤户尝试在多窗⼝模式下启动 Activity,该 Activity 将全屏显⽰。
如果您的应⽤⾯向 Android N,但未对该属性指定值,则该属性的值默认设为 true。
如果做电视开发或其它特殊需求,还有⼀个属性需要注意:
[代码]xml代码:
在清单⽂件的 节点中设置该属性,指明 Activity 是否⽀持画中画显⽰。如果 android:resizeableActivity为 false,将忽略该属性。
当然你还可以指定在⾃由形状模式时 Activity 的默认⼤⼩、位置和最⼩尺⼨:
[代码]xml代码:
对于 Android N,清单⽂件元素⽀持以下⼏种属性,这些属性影响 Activity 在多窗⼝模式中的⾏为:
android:defaultWidth 以⾃由形状模式启动时 Activity 的默认宽度。
android:defaultHeight 以⾃由形状模式启动时 Activity 的默认⾼度。
android:gravity 以⾃由形状模式启动时 Activity 的初始位置。
android:minimalSize 分屏和⾃由形状模式中 Activity 的最⼩⾼度和最⼩宽度。 如果⽤户在分屏模式中移动分界线,使 Activity 尺⼨低于指定的最⼩值,系统会将 Activity 裁剪为⽤户请求的尺⼨。
多窗⼝模式中运⾏应⽤注意事项
在设备处于多窗⼝模式中时,某些功能会被禁⽤或忽略,因为这些功能对与其他 Activity 或应⽤共享设备屏幕的 Activity ⽽⾔没有意义。此类功能包括:
某些⾃定义选项将被禁⽤;例如,在⾮全屏模式中,应⽤⽆法隐藏状态栏。
lc-a系统将忽略对 android:screenOrientation属性所作的更改三辊轧管机
Activity类中添加了以下新⽅法,以⽀持多窗⼝显⽰。
Activity.inMultiWindow() 调⽤该⽅法以确认 Activity 是否处于多窗⼝模式。
Activity.inPictureInPicture() 调⽤该⽅法以确认 Activity 是否处于画中画模式。注:画中画模式是多窗⼝模式的特例。 如果myActivity.inPictureInPicture()返回 true,则 myActivity.inMultiWindow()也返回 true。
每个⽅法还有 Fragment版本,例如 Fragment.inMultiWindow()。
在多窗⼝模式中启动新 Activity
在启动新 Activity 时,⽤户可以提⽰系统如果可能,应将新 Activity 显⽰在当前 Activity 旁边。 要执⾏此操作,可使⽤标志
Intent.FLAG_ACTIVITY_LAUNCH_TO_ADJACENT。传递此标志将请求以下⾏为:
如果设备处于分屏模式,系统会尝试在启动系统的 Activity 旁创建新 Activity,这样两个 Activity 将共享屏幕。 系统并不⼀定能实现此操作,但如果可以,系统将使两个 Activity 处于相邻的位置。
如果设备不处于分屏模式,则该标志⽆效。
[代码]java代码:
Paste_Image.png
⽀持拖放
⽤户可以在两个 Activity 共享屏幕的同时在这两个 Activity 之间拖放。因此,如果您的应⽤⽬前不⽀持拖放功能,您可以在其中添加此功能。
android.view.DropPermissions令牌对象,负责指定对接收拖放数据的应⽤授予的权限。
View.startDragAndDrop() View.startDrag()的新别名。要启⽤跨 Activity 拖放,请传递新标志 View.DRAG_FLAG_GLOBAL。如需对接收拖放数据的 Activity 授予 URI 权限,可根据情况传递新标志View.DRAG_FLAG_GLOBAL_URI_READ
或 View.DRAG_FLAG_GLOBAL_URI_WRITE。超声波萃取
View.cancelDragAndDrop() 取消当前正在进⾏的拖动操作。只能由发起拖动操作的应⽤调⽤。
View.updateDragShadow() 替换当前正在进⾏的拖动操作的拖动阴影。只能由发起拖动操作的应⽤调⽤。

本文发布于:2024-09-22 04:01:11,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/152115.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模式   分屏   系统   功能   处于   属性
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议