Android 監聽鍵盤狀態變化,並獲取鍵盤高度
因為是監控鍵盤狀態的改變就不上效果圖了
按照規矩先吧傳送門搞好GitHub - GitHubToLiao/KeyboardListenerDemo
在我們平常開發過程中很多地方都需要監控鍵盤的變化以及獲取鍵盤的高度,谷歌提供的API中並沒有提供有關鍵盤狀態變化以及獲取鍵盤高度的相關監聽,但是我們可以通過別的方式得到我們想要的東西,API是死的人是活的。
這裡我就來說說我實現的思路
我們都知道在Android我們是可以拿到螢幕中可視高度的,如果我們拿到螢幕的高度然後減去可視區域的高度不就是鍵盤的高度了。 拿到鍵盤的高度,下來就是要監控什麼時候鍵盤彈起來,什麼時候關閉。這樣我們就可一將獲取鍵盤狀態變化分解成下面三步了。
一、佈局變化監聽
OnGlobalLayoutListener 是ViewTreeObserver的內部類,當一個檢視樹的佈局發生改變時,可以被ViewTreeObserver監聽到,在檢視樹的全域性事件改變時得到通知。ViewTreeObserver不能直接例項化,而是通過getViewTreeObserver()獲得。
這裡需要注意的是當我們不在使用監聽的時候需要呼叫removeOnGlobalLayoutListener對監聽進行移除,不然容易發生記憶體洩露
二、獲取可視區域大小,兩行程式碼沒什麼可說的
Rect rect = new Rect();
contentView.getWindowVisibleDisplayFrame(rect);//獲取佈局的可視區域
三、計算鍵盤高度
int keyboardHeight = contentView.getHeight() - (rect.bottom - rect.top);
解釋下我們通過螢幕的高度減去可視區域的高度得到的就是鍵盤的高度,當得到的高度為0時代表鍵盤關閉,當高度大於0代表鍵盤開啟
四、傳送門
相關文章
- Android開發之監聽軟鍵盤狀態(彈出收回)Android
- 監聽鍵盤事件事件
- Android 監聽鍵盤彈出收起Android
- android開發中,監聽軟鍵盤的狀態(收起或者開啟)Android
- 鍵盤監聽事件--向左事件
- javascript監聽鍵盤事件JavaScript事件
- python pynput監聽鍵盤Python
- Qt 介面獲取鍵盤Enter鍵QT
- Android 監聽鍵盤彈起及隱藏Android
- Android監聽軟鍵盤收起與彈出Android
- java全域性滑鼠鍵盤監聽Java
- [Android Framework]獲取U盤 SD 狀態AndroidFramework
- Android獲取狀態列高度Android
- js中獲取鍵盤事件JS事件
- js獲取鍵盤按鍵的碼值JS
- java鍵盤監聽之視窗監聽的實現Java
- flutter中監聽鍵盤Flutter
- 完美獲取Android狀態列高度Android
- vue的監聽鍵盤事件的快捷方法Vue事件
- Java中的鍵盤監聽事件KeyListenerJava事件
- js獲取鍵盤按鍵值程式碼例項JS
- h5監聽手機鍵盤彈起H5
- android自定義鍵盤 自定義身份證鍵盤Android
- js監聽鍵盤事件程式碼例項例項JS事件
- iOS安全攻防(八):鍵盤快取與安全鍵盤iOS快取
- 09-XSS鍵盤監聽、cookie竊取&檔案上傳繞過Cookie
- Mac監控鍵盤輸入並執行動作Mac
- Android軟鍵盤模式Android模式
- android 自定義鍵盤Android
- 自定義Android鍵盤Android
- Android Home鍵、鎖屏鍵監聽Android
- Android Home鍵監聽Android
- js捕獲鍵盤按鍵程式碼例項JS
- Android鍵盤操作總結Android
- android鍵盤擋住介面Android
- android 支援鍵盤導航Android
- 關於Android中軟鍵盤顯示隱藏的監聽判斷總結Android
- 支援鍵盤上下鍵的隔行變色程式碼