Android-7分屏体验,代码上手初见

Android-7(API24)前几天风风火火发布,小的里面下载最新的体验一把,当然是模拟器了,说实话然并卵。下面是小的录的gif先睹为快吧。

体验

实现

实现分屏,还是蛮简单的,代码层,当然底层实现暂未研究,不过真心不知道在这小小的手机上分屏有什么用处,好了废话不说了现在就是撸一把。

要实现分屏只要在AndroidManifest.xml定义一个属性就行,默认是支持分屏的


    
        
        
    

是不是很简单呢,是你想的简单了,这样变化后什么周期呢?

将Activity启动到另外一个分屏中

// 启动时添加Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT这个flags,就可以把Activity启动到另一个分屏中
Intent intent = new Intent(this, AdjacentActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

不支持分屏时

  1. 不支持分屏,没有设置 Intent.FLAG_ACTIVITY_NEW_TASK直接启动到当前分屏中
  2. 设置了 Intent.FLAG_ACTIVITY_NEW_TASK,取消分屏,全部显示

分屏变化监听

新的api中添加了下面的回到,通知分屏变化

// 当屏幕变化是回调
@Override
public void onMultiWindowModeChanged(boolean isInMultiWindowMode) {
    super.onMultiWindowModeChanged(isInMultiWindowMode);
    Log.i(TAG, "****** onMultiWindowModeChanged() ******");
}

生命周期变化

Activity的分屏变化还是和原来差不多,可以看成是Activity 的切换(下文log,为了好看去掉了时间)

  1. 长按菜单键(通常是方快建)进入分屏状态

    com.mz.android_7.MainActivity****** onMultiWindowModeChanged() ******
    com.mz.android_7.MainActivity****** onPause() ******
    com.mz.android_7.MainActivity****** onStop() ******
    com.mz.android_7.MainActivity****** onDestroy() ******
    com.mz.android_7.MainActivity****** onCreate() ******
    com.mz.android_7.MainActivity****** onStart() ******
    com.mz.android_7.MainActivity****** onResume() ******
    com.mz.android_7.MainActivity****** onPause() ******
    // // Activity销毁重建,此时当前Activity进入到pause状态,不在有焦点
    
  2. 点击当前分屏

    com.mz.android_7.MainActivity****** onResume() ******
    // 进入到resume状态
    
  3. 点击另一分屏

    com.mz.android_7.MainActivity****** onPause() ******
    // 再次进入到pause状态,如果不进行其他操作,来回点击,两个状态来回切换
    
  4. 退出分屏

    com.mz.android_7.MainActivity****** onPause() ******
    com.mz.android_7.MainActivity****** onStop() ******
    com.mz.android_7.MainActivity****** onDestroy() ******
    com.mz.android_7.MainActivity****** onCreate() ******
    com.mz.android_7.MainActivity****** onStart() ******
    com.mz.android_7.MainActivity****** onResume() ******
    com.mz.android_7.MainActivity****** onMultiWindowModeChanged() ******
    // Activity销毁重建,进入resume状态,分屏退出
    

总结

Android-7的分屏在我看来没什么用处,但是本质是提高了用户的体验,当然是在运行流畅的前提下。它的本质还是同一时刻只有一个Activity处于resume状态,所以并没有太高深的东西,只是对于生命周期的理解要加强。

阅读原文

你可能感兴趣的:(Android-7分屏体验,代码上手初见)