多窗口模式编程的一些知识

在Android7.0系统中引入了一个非常有特色的功能多窗口模式,它允许我们在同一个屏幕中同时打开两个应用程序。

进入和退出多窗口模式

进入多窗口模式
  • 在overview列表界面长按任意一个活动的标题,将该活动拖动到屏幕突出显示的区域,则可以进入多窗口模式。
  • 打开任意一个程序,长按overview按钮,也可以进入多窗口模式。
退出多窗口模式
  • 再次长按overview按钮
  • 将屏幕中央的分割线向屏幕任意一个方向拖动到底即可

多窗口模式下的生命周期

多窗口模式并不会改变活动原有的生命周期,只是会将用户最近交互过的那个活动设置为运行状态,而将多窗口模式下另外一个可见的活动设置为暂停状态。如果这时用户又去和暂停的活动进行交互,那么该活动就变成运行状态,之前处于运行状态的活动变成暂停状态。

  • 进入多窗口的程序经历了一个重新创建的过程。其实这个是正常现象,因为进入多窗口模式后活动的大小发生了比较大的变化,此时默认是会重新创建活动的。除此之外,像横竖屏切换也是会重新创建活动的
  • 了解了多窗口模式下活动的生命周期规则,那么我们在编写程序的时候,就可以将一些关键性的点考虑进去了。比如说,在多窗口模式下,用户仍然可以看到处于暂停状态的应用,那么像视频播放器之类的应用在此时就应该能继续播放视频才对。因此,我们最好不要在活动的onPause()方法中去处理食品播放器的暂停逻辑,而是应该在onStop()方法中去处理,并且在onStart()方法恢复视频的播放。

如何改变进入多窗口模式/横竖屏切换的时候活动会被重新创建?

在AndroidManifest.xml中对活动进行如下配置

<activity
    ...
   android:configChanges="orientation|keyboardHidden|screenSize|screenLayout">

加入了这行配置之后,不管是进入多窗口模式,还是横竖屏切换,活动都不会被重新创建,而是会将屏幕发生变化的事件通知到Activity的onConfigurationChanged()方法当中。因此,如果你想在屏幕发生变化的时候进行相应的逻辑处理,那么在活动中重写onConfigurationChanged()方法即可。

禁用多窗口模式

禁用多窗口模式的方法非常简单,只需要在AndroidManifest.xml的或标签中加入如下属性即可:

android:resizeableActivity=["true"|"false"]

其中,true表示应用支持多窗口模式,false表示应用不支持多窗口模式,如果不配置这个属性,那么默认值为true。但是,这个属性只有当项目的targetSdkVersion指定为24或者更高的时候才会有用。针对这种枪框,Android规定,如果项目指定的targetSdkVersion低于24,并且活动是不允许横竖屏切换的,那么该应用也将不支持多窗口模式。

android:screenOrientation=["portrait"|"landscape"]

其中portrait表示竖屏,landscape是横屏。

猜你喜欢

转载自blog.csdn.net/ting1406525501/article/details/81874861