天天看點

@Android程式員今年必看!!拖更了三年帶回了一個抖音(2)

@Android程式員今年必看!!拖更了三年帶回了一個抖音(2)

藍色區域為内容區域,比如聊天im界面上,藍色區域大多數為 recyclerview 實作的聊天清單

綠色區域為面闆區域,用于存儲功能面闆,比如微信的表情界面

在滑動模式下,圖2是功能面闆顯示的結構圖。也就是說,無論是輸入法顯示與否,藍色區域相對于圖一向上滑動了等量輸入法高度的距離。當從輸入法切換到其他功能面闆(比如表情面闆)時,如果原表情面闆就已經顯示在輸入法底下,則可無縫的顯露出來。

而上述的想法,需要幹預到藍色及綠色區域的 layout 邏輯。從滑動模式下的圖一切換稱圖二時,其整體高度實際上不變,而 layout 的啟始坐标是改變的,整體 bound 也是發生了更改,借助 changebounds 可實作平滑過渡。

實作之後效果大緻如下。

@Android程式員今年必看!!拖更了三年帶回了一個抖音(2)

使用也是非常簡單。

new panelswitchhelper.builder(this)

.addkeyboardstatelistener {}

.addedittextfocuschangelistener {}

.addviewclicklistener {}

.addpanelchangelistener {}

.contentcanscrolloutside(true)

.logtrack(true)

.build()

複制代碼

為了追求更高的實時體驗,我們還需要相容使用者可能随時調整輸入法高度,随時顯示/隐藏導航欄配置。

@Android程式員今年必看!!拖更了三年帶回了一個抖音(2)
@Android程式員今年必看!!拖更了三年帶回了一個抖音(2)

某一天,奇怪的螢幕來了,挖孔屏/劉海屏/全面屏。

某一天,issue 回報 pad 有點适配問題。

某一天,部分使用庫的朋友回報說直播間怎麼處理。

維護這個庫,基本都是鑒于自己的興趣愛好,而且一般提議的功能會被稽核,合理的需求都會被安排!

“ 統統支援!”

經過多個版本疊代之後,架構表現出來的優勢:

改進傳統使用 weight+linearlayout 動态更改布局高度适配面闆的技術方案,支援多種原生 viewgroup 容器

為了追求更平滑的适配效果,當輸入法動态調整高度或動态隐藏導航欄時,功能面闆能實時适配

為了追求更流暢的切換效果,支援滑動模式,滑動會更流暢,同時也支援固定模式

豐富的機型适配,适配 全面屏/劉海屏/挖孔屏/pad 等非正常 phone 機型

豐富的場景支援,支援 activity/fragment/dialog/popupwindow,應用到聊天/視訊/直播/資訊流評論等場景

豐富的 api 支援,可自定義内容容器,業務面闆,靈活控制台隐藏,靈活控制切換面闆速度

如果你擔心不知道怎麼用,smaple 已經最直白的幫你梳理了你所需要的場景及 api 示範

@Android程式員今年必看!!拖更了三年帶回了一個抖音(2)
@Android程式員今年必看!!拖更了三年帶回了一個抖音(2)

如果你想看到更多的場景介紹,可前往 場景使用介紹

如果你想了解更多api使用,可前往 api使用指南

最後下對比 bilibili/虎牙直播/抖音直播/微信朋友圈的效果。

@Android程式員今年必看!!拖更了三年帶回了一個抖音(2)
@Android程式員今年必看!!拖更了三年帶回了一個抖音(2)

對比結果:比 bilibili 的切換更平滑

@Android程式員今年必看!!拖更了三年帶回了一個抖音(2)
@Android程式員今年必看!!拖更了三年帶回了一個抖音(2)

對比結果:比 抖音直播 的切換更平滑

@Android程式員今年必看!!拖更了三年帶回了一個抖音(2)
@Android程式員今年必看!!拖更了三年帶回了一個抖音(2)

對比結果:比 虎牙直播 的切換更平滑

@Android程式員今年必看!!拖更了三年帶回了一個抖音(2)
@Android程式員今年必看!!拖更了三年帶回了一個抖音(2)

對比結果:比 朋友圈 的切換效果基本一緻

如果你還為輸入場景的頁面變換憂愁,panelswitchhelper 可以幫助你解決非常多的問題。重要的是,我還可以協助你解決你可能遇到的困難呀~。

如果你未來還可以需要開發涉及輸入場景的功能,panelswitchhelper 可以成為你的首選。

歡迎前往體驗,任何問題可提 issue ,我會第一時間回複,如有幫助, 下呗。

大家感興趣興趣的話,後續會更一篇文章寫庫的細節實作及适配衆多奇葩場景的奇思異想。