android 键盘监听

从知乎上看到的一种解决方案,目前还没发现有什么坑。

public class SoftKeyBroadManager implements ViewTreeObserver.OnGlobalLayoutListener{

public interface SoftKeyboardStateListener {

void onSoftKeyboardOpened(int keyboardHeightInPx);

void onSoftKeyboardClosed();

}

private final List listeners = new LinkedList();

private final View activityRootView;

private int lastSoftKeyboardHeightInPx;

private boolean isSoftKeyboardOpened;

public SoftKeyBroadManager(View activityRootView) {

this(activityRootView,false);

}

public SoftKeyBroadManager(View activityRootView, boolean isSoftKeyboardOpened) {

this.activityRootView = activityRootView;

this.isSoftKeyboardOpened = isSoftKeyboardOpened;

activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(this);

}

@Override

public void onGlobalLayout() {

final Rect r = new Rect();

activityRootView.getWindowVisibleDisplayFrame(r);

final int heightDiff = activityRootView.getRootView().getHeight() - (r.bottom - r.top);

if (!isSoftKeyboardOpened && heightDiff > 500) {

// 如果高度超过500 键盘可能被打开

isSoftKeyboardOpened = true;

notifyOnSoftKeyboardOpened(heightDiff);

} else if (isSoftKeyboardOpened && heightDiff < 500) {

isSoftKeyboardOpened = false;

notifyOnSoftKeyboardClosed();

}

}

public void setIsSoftKeyboardOpened(boolean isSoftKeyboardOpened) {

this.isSoftKeyboardOpened = isSoftKeyboardOpened;

}

public boolean isSoftKeyboardOpened() {

return isSoftKeyboardOpened;

}

public int getLastSoftKeyboardHeightInPx() {

return lastSoftKeyboardHeightInPx;

}

public void addSoftKeyboardStateListener(SoftKeyboardStateListener listener) {

listeners.add(listener);

}

public void removeSoftKeyboardStateListener(SoftKeyboardStateListener listener) {

listeners.remove(listener);

}

private void notifyOnSoftKeyboardOpened(int keyboardHeightInPx) {

this.lastSoftKeyboardHeightInPx = keyboardHeightInPx;

for (SoftKeyboardStateListener listener : listeners) {

if (listener != null) {

listener.onSoftKeyboardOpened(keyboardHeightInPx);

}

}

}

private void notifyOnSoftKeyboardClosed() {

for (SoftKeyboardStateListener listener : listeners) {

if (listener != null) {

listener.onSoftKeyboardClosed();

}

}

}

}

使用方法

softKeyBroadManager = new SoftKeyBroadManager(root);

softKeyBroadManager.addSoftKeyboardStateListener(softKeyboardStateListener);

private SoftKeyBroadManager.SoftKeyboardStateListener softKeyboardStateListener = new

SoftKeyBroadManager.SoftKeyboardStateListener() {

@Override

public void onSoftKeyboardOpened(int keyboardHeightInPx) {

PandaLogUtils.getInstance().i("键盘打开");

}

@Override

public void onSoftKeyboardClosed() {

PandaLogUtils.getInstance().i("键盘关闭");

//重新算价

calculate();

}

};

android 后台键盘按键监听,android键盘的监听相关推荐

  1. python keyboard backspace_selenium键盘按键Keys类及键盘码详解

    selenium可以操作鼠标,此外它的Keys()类提供了操作键盘的途径,因为键盘上几乎所有按键都可以用Keys()类实现. 之前我们一直用元素的send_keys()方法输入文字,其实该方法也可以输 ...

  2. Linux机械键盘按键无法识别,机械键盘个别键位失灵该怎么修复?

    现在的机械键盘越来越普及,比起薄膜键盘来,啪啪啪的打字手感真的很爽,再也不想用薄膜键盘了,薄膜键盘不易出问题,易维护,想买好的机械键盘,但是好的键盘动辄几百上千,楼主我没钱只能买了个不出名的黑轴键盘, ...

  3. java 调用dll 方法 postmessage实现后台模拟按键_VB实现模拟键盘及模拟鼠标(后台操作)...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 接下来来研究下模拟鼠标 模拟鼠标的常数整理,如下: WM_MOUSEFIRST 0x0200 //移动鼠标时发生 WM_MOUSEMOVE 0x0200 ...

  4. python编程midi键盘按键_Python中捕获键盘的方式详解

    python中捕获键盘操作一共有两种方法 第一种方法: 使用pygame中event方法 使用方式如下:使用键盘右键为例 if event.type = pygame.KEYDOWN and even ...

  5. python获取键盘按键_Python中捕获键盘的方式详解

    python中捕获键盘操作一共有两种方法 第一种方法: 使用pygame中event方法 使用方式如下:使用键盘右键为例 if event.type = pygame.KEYDOWN and even ...

  6. usb 键盘码表_ASCII码表,键盘按键码表,虚拟键盘按键码表

    ASCII码表 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 0 NUT 32 (space) 64 @ 96 . 1 SOH 33 ! 65 A 9 ...

  7. android后台如何动态添加图片,android – 如何从JSON数组动态地向ImageView添加图像...

    我想从存储在 JSON文件中的链接向我的iamgeview添加一个图像,如下所示: { "parts":[ {"name": "Bosch Iridi ...

  8. 为什么计算机乱字符,电脑键盘按键为什么会错乱 键盘按键错乱原因介绍【详解】...

    键盘是最常用也是最主要的输入设备,通过键盘可以将英文字母.数字.标点符号等输入到计算机中,从而向计算机发出命令.输入数据等.那么台式键盘按键错乱怎么办呢?接下来就让我们一起来了解下吧. 笔记本键盘 台 ...

  9. python编程midi键盘按键错乱_键盘按键错乱怎么办?

    展开全部 利用360修复键盘按键错乱的方法: 一.打开360杀毒,并进入电脑门诊: 二.在搜索62616964757a686964616fe58685e5aeb931333365633937框中输入键 ...

  10. Android App监听软键盘按键的三种方式(转)

    最近有类似需求,在csdn上刚好发现,粘贴过来,以防止忘记喽 前言: 我们在android手机上面有时候会遇到监听手机软键盘按键的时候,例如:我们在浏览器输入url完毕后可以点击软键盘右下角的&quo ...

最新文章

  1. Service xxx does not have a SELinux domain defined
  2. 17_android下xmlpull解析
  3. python开发小型数据库_python web开发之数据库ORM的 peewee库 动手学习实践笔记
  4. php只取时间的下士_PHP 获取时间的各种处理方式!
  5. 其实在直播平台买东西的客户最愚蠢
  6. 推荐牛X的一本JS书
  7. 关于text-indent
  8. 实力验证,浪潮整机柜软件定义存储性能有“数”可依
  9. 牛客网2018多校第一场J题
  10. 如何保持交互的可见性
  11. keypress事件中键盘上每个键的KeyAscii值(易语言/VB)
  12. 10种常用数据分析方法
  13. java入门、常量和变量
  14. 解决百度首页导航栏透明度问题
  15. 开发人员的不断流动、让我们更加坚定信念,一定要控制好整个系统的底层架构、核心设计、日常质量检查工作
  16. halcon中的分水岭算法讲解以及作用和实例
  17. 《Intriguing Properties of Contrastive Losses》阅读笔记
  18. 【荐】女性新手必看的停车入位技巧图解
  19. 射频中IM3、IIP3、OIP3、G、P1dB指标计算
  20. __FILE__显示全路径的问题

热门文章

  1. MATLAB数学建模 线性方程式与线性系统
  2. 多重循环(图形打印2)-C语言
  3. C语言进阶(牟海军)
  4. mysql生产cdm文件_PowerDesigner 概念数据模型(CDM) 说明
  5. python学习之钉钉打卡
  6. Visual FoxPro 系统容量(vfp9)
  7. android+腾讯地图h5,H5调用腾讯地图
  8. MalformedJsonException: JSON forbids octal prefixes
  9. 图片预加载学习(二):有序加载之图片切换
  10. Python爬取10529条《三十而已》热评,看看大家都说了些啥!