Android监听键盘状态变化
来源:互联网 发布:node supervisor 编辑:程序博客网 时间:2024/05/21 01:52
如下监听键盘状态变化的代码摘自React native的键盘状态监听代码,
这个方法会影响部分性能,正常情况下可以忽略。
import android.graphics.Rect;import android.support.annotation.Nullable;import android.util.DisplayMetrics;import android.view.View;import android.view.ViewTreeObserver;/** * Keyboard status monitor. * * usage: * * View view;//View must be had added to the View Tree * * * view.getViewTreeObserver().addOnGlobalLayoutListener(new KeyboardListener(view){ * * @Override * public void keyboardStatusChanged(boolean keyboardDidShow, @Nullable KeyboardInfo params){ * if(keyboardDidShow){ * //showing or height changed * }else{ * //hidden * } * } * * }); */public abstract class KeyboardListener implements ViewTreeObserver.OnGlobalLayoutListener { private int mKeyboardHeight = 0; private final Rect mVisibleViewArea = new Rect(); private View view; private DisplayMetrics mDisplayMetrics; public KeyboardListener(View view) { if (view == null) { throw new NullPointerException("view is null"); } mDisplayMetrics = view.getContext().getResources().getDisplayMetrics(); this.view = view; } @Override public void onGlobalLayout() { View rootView = view.getRootView(); if (rootView == null) { return; } rootView.getWindowVisibleDisplayFrame(mVisibleViewArea); final int heightDiff = mDisplayMetrics.heightPixels - mVisibleViewArea.bottom; if (mKeyboardHeight != heightDiff && heightDiff > 0) { // keyboard is now showing, or the keyboard height has changed mKeyboardHeight = heightDiff; KeyboardInfo keyboardInfo = new KeyboardInfo(); keyboardInfo.screenX = mVisibleViewArea.left; keyboardInfo.screenY = mVisibleViewArea.bottom; keyboardInfo.width = mVisibleViewArea.width(); keyboardInfo.height = mKeyboardHeight; sendEvent(true, keyboardInfo); } else if (mKeyboardHeight != 0 && heightDiff == 0) { // keyboard is now hidden mKeyboardHeight = heightDiff; sendEvent(false, null); } } private void sendEvent(boolean keyboardDidShow, @Nullable KeyboardInfo keyboardInfo) { keyboardStatusChanged(keyboardDidShow, keyboardInfo); } public abstract void keyboardStatusChanged(boolean keyboardDidShow, @Nullable KeyboardInfo params); public static class KeyboardInfo { /** * screen x pixle */ public double screenY; public double screenX; public double width; public double height; }}
0 0
- Android监听键盘状态变化
- 【Android】监听蓝牙状态变化
- Android监听网络状态变化
- 监听android wifi状态变化监听
- Android-监听虚拟键盘状态
- android开发键盘状态监听
- Android监听网络连接状态变化
- android接收广播监听网络状态变化
- android 监听网络连接状态的变化
- 简单 android 广播监听网络状态变化
- 笔记 android 监听网络状态变化-------广播
- android 使用广播监听网络状态变化
- Android 监听网络状态的变化
- Android:检测网络状态&监听网络变化
- Android:检测网络状态&监听网络变化
- 实现Android网络状态变化监听
- Android 中监听WIFI连接状态变化
- android 监听网络状态的变化+Observer
- 机器学习中的相似性度量
- 零基础入门学习Python(3):数据类型
- jQuery实现的虚拟键盘
- ,工程项目创建流程,目录结构的一半格式,工程中pod进来的用<>,bundle命名的作用,用处怎么用兼容读个版本,pch文件创建
- HDU 5592 ZYB's Premutation
- Android监听键盘状态变化
- SHELL编程
- jsp Request获取url信息的各种方法比较
- C#类型转换总结(三)各类型转化实例
- JSP内置对象
- 列表中的导航菜单的制作
- ECSHOP后台SQL查询提示错误 this sq May contain
- 反向迭代器
- 博客csdn