android 后台键盘按键监听,android键盘的监听
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键盘的监听相关推荐
- python keyboard backspace_selenium键盘按键Keys类及键盘码详解
selenium可以操作鼠标,此外它的Keys()类提供了操作键盘的途径,因为键盘上几乎所有按键都可以用Keys()类实现. 之前我们一直用元素的send_keys()方法输入文字,其实该方法也可以输 ...
- Linux机械键盘按键无法识别,机械键盘个别键位失灵该怎么修复?
现在的机械键盘越来越普及,比起薄膜键盘来,啪啪啪的打字手感真的很爽,再也不想用薄膜键盘了,薄膜键盘不易出问题,易维护,想买好的机械键盘,但是好的键盘动辄几百上千,楼主我没钱只能买了个不出名的黑轴键盘, ...
- java 调用dll 方法 postmessage实现后台模拟按键_VB实现模拟键盘及模拟鼠标(后台操作)...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 接下来来研究下模拟鼠标 模拟鼠标的常数整理,如下: WM_MOUSEFIRST 0x0200 //移动鼠标时发生 WM_MOUSEMOVE 0x0200 ...
- python编程midi键盘按键_Python中捕获键盘的方式详解
python中捕获键盘操作一共有两种方法 第一种方法: 使用pygame中event方法 使用方式如下:使用键盘右键为例 if event.type = pygame.KEYDOWN and even ...
- python获取键盘按键_Python中捕获键盘的方式详解
python中捕获键盘操作一共有两种方法 第一种方法: 使用pygame中event方法 使用方式如下:使用键盘右键为例 if event.type = pygame.KEYDOWN and even ...
- usb 键盘码表_ASCII码表,键盘按键码表,虚拟键盘按键码表
ASCII码表 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 0 NUT 32 (space) 64 @ 96 . 1 SOH 33 ! 65 A 9 ...
- android后台如何动态添加图片,android – 如何从JSON数组动态地向ImageView添加图像...
我想从存储在 JSON文件中的链接向我的iamgeview添加一个图像,如下所示: { "parts":[ {"name": "Bosch Iridi ...
- 为什么计算机乱字符,电脑键盘按键为什么会错乱 键盘按键错乱原因介绍【详解】...
键盘是最常用也是最主要的输入设备,通过键盘可以将英文字母.数字.标点符号等输入到计算机中,从而向计算机发出命令.输入数据等.那么台式键盘按键错乱怎么办呢?接下来就让我们一起来了解下吧. 笔记本键盘 台 ...
- python编程midi键盘按键错乱_键盘按键错乱怎么办?
展开全部 利用360修复键盘按键错乱的方法: 一.打开360杀毒,并进入电脑门诊: 二.在搜索62616964757a686964616fe58685e5aeb931333365633937框中输入键 ...
- Android App监听软键盘按键的三种方式(转)
最近有类似需求,在csdn上刚好发现,粘贴过来,以防止忘记喽 前言: 我们在android手机上面有时候会遇到监听手机软键盘按键的时候,例如:我们在浏览器输入url完毕后可以点击软键盘右下角的&quo ...
最新文章
- Service xxx does not have a SELinux domain defined
- 17_android下xmlpull解析
- python开发小型数据库_python web开发之数据库ORM的 peewee库 动手学习实践笔记
- php只取时间的下士_PHP 获取时间的各种处理方式!
- 其实在直播平台买东西的客户最愚蠢
- 推荐牛X的一本JS书
- 关于text-indent
- 实力验证,浪潮整机柜软件定义存储性能有“数”可依
- 牛客网2018多校第一场J题
- 如何保持交互的可见性
- keypress事件中键盘上每个键的KeyAscii值(易语言/VB)
- 10种常用数据分析方法
- java入门、常量和变量
- 解决百度首页导航栏透明度问题
- 开发人员的不断流动、让我们更加坚定信念,一定要控制好整个系统的底层架构、核心设计、日常质量检查工作
- halcon中的分水岭算法讲解以及作用和实例
- 《Intriguing Properties of Contrastive Losses》阅读笔记
- 【荐】女性新手必看的停车入位技巧图解
- 射频中IM3、IIP3、OIP3、G、P1dB指标计算
- __FILE__显示全路径的问题
热门文章
- MATLAB数学建模 线性方程式与线性系统
- 多重循环(图形打印2)-C语言
- C语言进阶(牟海军)
- mysql生产cdm文件_PowerDesigner 概念数据模型(CDM) 说明
- python学习之钉钉打卡
- Visual FoxPro 系统容量(vfp9)
- android+腾讯地图h5,H5调用腾讯地图
- MalformedJsonException: JSON forbids octal prefixes
- 图片预加载学习(二):有序加载之图片切换
- Python爬取10529条《三十而已》热评,看看大家都说了些啥!