Android-7(API24)前幾天風(fēng)風(fēng)火火發(fā)布椭赋,小的里面下載最新的體驗(yàn)一把抚岗,當(dāng)然是模擬器了,說實(shí)話然并卵纹份。下面是小的錄的gif先睹為快吧苟跪。
體驗(yàn)
實(shí)現(xiàn)
實(shí)現(xiàn)分屏,還是蠻簡(jiǎn)單的蔓涧,代碼層,當(dāng)然底層實(shí)現(xiàn)暫未研究笋额,不過真心不知道在這小小的手機(jī)上分屏有什么用處元暴,好了廢話不說了現(xiàn)在就是擼一把。
要實(shí)現(xiàn)分屏只要在AndroidManifest.xml定義一個(gè)屬性就行兄猩,默認(rèn)是支持分屏的
<activity
android:name=".MainActivity"
// 就是他茉盏、就是他鉴未、就是他,如果不想支持給為false鸠姨,默認(rèn)是true
android:resizeableActivity="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
是不是很簡(jiǎn)單呢铜秆,是你想的簡(jiǎn)單了,這樣變化后什么周期呢讶迁?
將Activity啟動(dòng)到另外一個(gè)分屏中
// 啟動(dòng)時(shí)添加Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT這個(gè)flags连茧,就可以把Activity啟動(dòng)到另一個(gè)分屏中
Intent intent = new Intent(this, AdjacentActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
不支持分屏?xí)r
- 不支持分屏,沒有設(shè)置 Intent.FLAG_ACTIVITY_NEW_TASK直接啟動(dòng)到當(dāng)前分屏中
- 設(shè)置了 Intent.FLAG_ACTIVITY_NEW_TASK巍糯,取消分屏啸驯,全部顯示
分屏變化監(jiān)聽
新的api中添加了下面的回到,通知分屏變化
// 當(dāng)屏幕變化是回調(diào)
@Override
public void onMultiWindowModeChanged(boolean isInMultiWindowMode) {
super.onMultiWindowModeChanged(isInMultiWindowMode);
Log.i(TAG, "****** onMultiWindowModeChanged() ******");
}
生命周期變化
Activity的分屏變化還是和原來(lái)差不多祟峦,可以看成是Activity 的切換(下文log罚斗,為了好看去掉了時(shí)間)
-
長(zhǎng)按菜單鍵(通常是方快建)進(jìn)入分屏狀態(tài)
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銷毀重建,此時(shí)當(dāng)前Activity進(jìn)入到pause狀態(tài)宅楞,不在有焦點(diǎn)
-
點(diǎn)擊當(dāng)前分屏
com.mz.android_7.MainActivity****** onResume() ****** // 進(jìn)入到resume狀態(tài)
-
點(diǎn)擊另一分屏
com.mz.android_7.MainActivity****** onPause() ****** // 再次進(jìn)入到pause狀態(tài)针姿,如果不進(jìn)行其他操作,來(lái)回點(diǎn)擊厌衙,兩個(gè)狀態(tài)來(lái)回切換
-
退出分屏
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銷毀重建距淫,進(jìn)入resume狀態(tài),分屏退出
總結(jié)
Android-7的分屏在我看來(lái)沒什么用處迅箩,但是本質(zhì)是提高了用戶的體驗(yàn)溉愁,當(dāng)然是在運(yùn)行流暢的前提下。它的本質(zhì)還是同一時(shí)刻只有一個(gè)Activity處于resume狀態(tài)饲趋,所以并沒有太高深的東西拐揭,只是對(duì)于生命周期的理解要加強(qiáng)。