Android键盘监听事件
生活随笔
收集整理的這篇文章主要介紹了
Android键盘监听事件
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
本文檔為個(gè)人博客文檔系統(tǒng)的備份版本、作者:小游、作者博客:點(diǎn)擊訪問
我們想實(shí)現(xiàn)安卓鍵盤彈起和隱藏的監(jiān)聽事件,可以使用下面這個(gè)方法。
自己新建一個(gè)java文件,內(nèi)容如下:
public class SoftKeyBoardListener {private View rootView;//activity的根視圖int rootViewVisibleHeight;//紀(jì)錄根視圖的顯示高度private OnSoftKeyBoardChangeListener onSoftKeyBoardChangeListener;public SoftKeyBoardListener(Activity activity) {//獲取activity的根視圖rootView = activity.getWindow().getDecorView();//監(jiān)聽視圖樹中全局布局發(fā)生改變或者視圖樹中的某個(gè)視圖的可視狀態(tài)發(fā)生改變rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {@Overridepublic void onGlobalLayout() {//獲取當(dāng)前根視圖在屏幕上顯示的大小Rect r = new Rect();//獲取rootView在窗體的可視區(qū)域rootView.getWindowVisibleDisplayFrame(r);int visibleHeight = r.height();if (rootViewVisibleHeight == 0) {rootViewVisibleHeight = visibleHeight;return;}//根視圖顯示高度沒有變化,可以看作軟鍵盤顯示/隱藏狀態(tài)沒有改變if (rootViewVisibleHeight == visibleHeight) {return;}//根視圖顯示高度變小超過(guò)200,可以看作軟鍵盤顯示了if (rootViewVisibleHeight - visibleHeight > 200) {if (onSoftKeyBoardChangeListener != null) {onSoftKeyBoardChangeListener.keyBoardShow(rootViewVisibleHeight - visibleHeight);}rootViewVisibleHeight = visibleHeight;return;}//根視圖顯示高度變大超過(guò)200,可以看作軟鍵盤隱藏了if (visibleHeight - rootViewVisibleHeight > 200) {if (onSoftKeyBoardChangeListener != null) {onSoftKeyBoardChangeListener.keyBoardHide(visibleHeight - rootViewVisibleHeight);}rootViewVisibleHeight = visibleHeight;return;}}});}private void setOnSoftKeyBoardChangeListener(OnSoftKeyBoardChangeListener onSoftKeyBoardChangeListener) {this.onSoftKeyBoardChangeListener = onSoftKeyBoardChangeListener;}public interface OnSoftKeyBoardChangeListener {void keyBoardShow(int height);void keyBoardHide(int height);}public static void setListener(Activity activity, OnSoftKeyBoardChangeListener onSoftKeyBoardChangeListener) {SoftKeyBoardListener softKeyBoardListener = new SoftKeyBoardListener(activity);softKeyBoardListener.setOnSoftKeyBoardChangeListener(onSoftKeyBoardChangeListener);} }在activity中調(diào)用
//自動(dòng)監(jiān)聽鍵盤事件 SoftKeyBoardListener.setListener(this, new SoftKeyBoardListener.OnSoftKeyBoardChangeListener() {@Overridepublic void keyBoardShow(int height) {Toast.makeText(PostActivity.this, "鍵盤顯示 高度" + height, Toast.LENGTH_SHORT).show();}@Overridepublic void keyBoardHide(int height) {Toast.makeText(PostActivity.this, "鍵盤隱藏 高度" + height, Toast.LENGTH_SHORT).show();} });參考文章https://www.jianshu.com/p/c4c5adc7dd43
總結(jié)
以上是生活随笔為你收集整理的Android键盘监听事件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cocosbuilder3.0使用小记
- 下一篇: 迅雷下载的种子文件后坠总是php,我的迅