Android P通話界面的設(shè)計更改

背景

Google每一次大版本升級都會在架構(gòu)上改動通話,本文主要從設(shè)計模式方面介紹Android O到Android P通話界面InCallUI的改變。

Android O的MVP架構(gòu)

先看圖,

Android P之前的通話界面主要有兩層MVP結(jié)構(gòu),分別為:

外層:CallList(M)-InCallActivity(V)-InCallPresent(P)

內(nèi)層:Call(M)-XXXFragment(V)-XXXPresent(P)

外層MVP

如圖:

Fragment和ViewInterface的關(guān)系

上面圖中每一個Fragment都有其對應(yīng)的Ui,如圖:

其中每個Fragment實現(xiàn)一個Ui操作接口,而一個Ui操作接口只表示界面的一部分。如VideoUi就只包含視頻相關(guān)view操作、CallCardUi就只包含聯(lián)系人信息的相關(guān)view操作、CallButtonUi只包含操作按鈕的相關(guān)view操作。所以當(dāng)顯示一個視頻來電時,需要同時顯示VideoCallUi、CallCardUi、CallButtonUi,因此視頻來電界面的InCallActivity里面同時顯示了VideoCallFragment、CallCardFragment、CallButtonFragment三個Fragment。

內(nèi)層MVP

用Call-CallButtonFragment-CallButtonPresenter舉例如下:

Android P的新MVP架構(gòu)

先看圖:


外層MVP

外層變化不大,如圖:

主要是Activity里面對應(yīng)的Fragment的包含關(guān)系的變化。(Android O之后去掉了CallButtonFragment。)

Fragment和ViewInterface的關(guān)系

如圖:

其中Activity包含的三個主Fragment每個Fragment都對應(yīng)包含一個完整的界面,比如VideoCallFragment里面有:包含了視頻相關(guān)view操作的VideoCallScreen、包含了聯(lián)系人相關(guān)信息操作的InCallScreen、包含了操作按鈕相關(guān)操作的InCallButtonUi。即每個Fragment實現(xiàn)多個view操作接口。

如下圖所示:

內(nèi)層MVP

因為Fragment和ViewInterface的關(guān)系變化,所以導(dǎo)致內(nèi)層MVP結(jié)構(gòu)也發(fā)生變化,如圖:

內(nèi)層MVP
CallButtonPresenter MVP

其中的View由之前的一個僅實現(xiàn)該view操作的Fragment變成多個。

加入Delegate模式

MVP中View通知Presenter user events的過程中g(shù)oogle加了一層deleate模式的封裝,如下:

InCallButtonUi的實現(xiàn)者們不會直接通知CallButtonPresenter有用戶操作,而是委派InCallButtonUiDelegate去處理。比如,撥號但未真撥號成功時顯示的偽通話界面,如過用戶點擊了該界面的按鈕就不需要CallButtonPresenter去處理。

加入Factory模式

如圖:

新架構(gòu)的優(yōu)點

1. ViewInterface和Fragment的關(guān)系更改后使得內(nèi)層MVP架構(gòu)更容易擴展。

2. 加入Delegate和Factory模式使得外層MVP更容易擴展。如CallPendingActivity,其界面和InCallActivity界面幾乎一致,但它不需與Call交互,與用戶交互的操作也與InCallActivity不同,用新的架構(gòu)就很容易實現(xiàn)。同時,視頻彩鈴也可以更容易擴展:增加一個CRBTFragment,定制自己的界面,實現(xiàn)VideoCallScreen、InCallScreen、InCallButtonUi就行。


原創(chuàng)內(nèi)容歡迎轉(zhuǎn)載,但請注明出處,謝謝!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容