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

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

体验

实现

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

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

<activity
    android:name=".MainActivity"
    // 就是他、就是他、就是他,如果不想支持给为false,默认是true
    android:resizeableActivity="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER"/>
    </intent-filter>
</activity>

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

将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 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,977评论 25 708
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,498评论 0 17
  • Android开发中,大多APP可能根据实际情况直接将APP的界面方向设死了,或竖屏或横屏。但是,我们还是会遇到横...
    yoosir阅读 50,415评论 7 112
  • 我一脸释然 她以为我满不在乎 我们走不出这怪圈子 无法靠近 紧紧拥抱沉默 明知飞蛾扑火 却默默挥动翅膀往前飞 为你...
    友三阅读 141评论 0 0
  • 真正的放弃 是无声无息的 她会悄悄的把你 看在眼里烂在心里 然后在不知不觉之间 滋生一股抗拒的冷空气 把那些所有关...
    幻梦邪魂阅读 577评论 0 2