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
- 監聽鍵盤事件事件
- python pynput監聽鍵盤Python
- flutter中監聽鍵盤Flutter
- Android監聽軟鍵盤收起與彈出Android
- Android獲取狀態列高度Android
- [Android Framework]獲取U盤 SD 狀態AndroidFramework
- js中獲取鍵盤事件JS事件
- java鍵盤監聽之視窗監聽的實現Java
- vue的監聽鍵盤事件的快捷方法Vue事件
- Android Home鍵、鎖屏鍵監聽Android
- h5監聽手機鍵盤彈起H5
- 09-XSS鍵盤監聽、cookie竊取&檔案上傳繞過Cookie
- 自定義Android鍵盤Android
- Android軟鍵盤模式Android模式
- android 自定義鍵盤Android
- Android鍵盤操作總結Android
- Mac監控鍵盤輸入並執行動作Mac
- android PopupWindow監聽返回鍵無效Android
- Android 掃碼槍輸入時遮蔽軟鍵盤和頂部狀態列Android
- 鍵盤快捷鍵
- Android 軟鍵盤踩坑記Android
- Android自定義數字鍵盤Android
- Android 隱藏手機鍵盤Android
- 【JS】在連續性監聽事件中,監聽當前狀態是否變化JS事件
- 【快捷鍵】—— 鍵盤篇
- WPF 從鍵盤事件 KeyEventArgs 裡獲取 Scan Code 的方法事件
- Android自定義view之emoji鍵盤AndroidView
- php 之讀取鍵盤輸入PHP
- 鍵盤亂鍵怎麼處理 電腦鍵盤按鍵錯亂
- 鍵盤操作
- 鍵盤事件事件
- AutoTyper for Mac(鍵盤快捷鍵)Mac
- 12.1 使用鍵盤滑鼠監控鉤子
- H5頁面載入後表單獲取焦點並喚起軟鍵盤?H5
- 鍵盤壞了怎麼用軟鍵盤 電腦怎麼調出桌面鍵盤
- 獲取Mysql的狀態、變數MySql變數
- 曼巴狂蛇鍵盤怎麼調燈 曼巴狂蛇鍵盤變色教程