android 检测软件键盘弹起落下
1.检测android软件键盘的显示与隐藏侦听器
import android.app.Activity;
import android.content.Context;
import android.graphics.Rect;
import android.view.View;
import android.view.ViewTreeObserver;
import android.view.inputmethod.InputMethodManager;public class SoftKeyBoardListener {private View rootView;//activity的根视图int rootViewVisibleHeight;//纪录根视图的显示高度private OnSoftKeyBoardChangeListener onSoftKeyBoardChangeListener;public SoftKeyBoardListener(Activity activity) {//获取activity的根视图rootView = activity.getWindow().getDecorView();//监听视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变rootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {@Overridepublic void onGlobalLayout() {//获取当前根视图在屏幕上显示的大小Rect r = new Rect();rootView.getWindowVisibleDisplayFrame(r);int visibleHeight = r.height();System.out.println(""+visibleHeight);if (rootViewVisibleHeight == 0) {rootViewVisibleHeight = visibleHeight;return;}//根视图显示高度没有变化,可以看作软键盘显示/隐藏状态没有改变if (rootViewVisibleHeight == visibleHeight) {return;}//根视图显示高度变小超过200,可以看作软键盘显示了if (rootViewVisibleHeight - visibleHeight > 200) {if (onSoftKeyBoardChangeListener != null) {onSoftKeyBoardChangeListener.keyBoardShow(rootViewVisibleHeight - visibleHeight);}rootViewVisibleHeight = visibleHeight;return;}//根视图显示高度变大超过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);}//隐藏软件键盘public static void hideKeyBoard(View view){InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
// InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);if (imm != null) {imm.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);}}
}
2.具体运用
SoftKeyBoardListener.OnSoftKeyBoardChangeListener onSoftKeyBoardChangeListener = new SoftKeyBoardListener.OnSoftKeyBoardChangeListener() {@Overridepublic void keyBoardShow(int height) {//软件键盘升起 height代表软件键盘的高度Log.d(TAG, "keyBoardShow: ");//软件键盘弹起时 升起悬浮窗自定义键盘if(mServiceBound){FloatDialerService.wmParams.y = height + 20;FloatDialerService.mWindowManager.updateViewLayout(FloatDialerService.mFloatingLayout, FloatDialerService.wmParams);}}@Overridepublic void keyBoardHide(int height) {Log.d(TAG, "keyBoardHide: ");if(mServiceBound){FloatDialerService.wmParams.y = 10;FloatDialerService.mWindowManager.updateViewLayout(FloatDialerService.mFloatingLayout, FloatDialerService.wmParams);}}};SoftKeyBoardListener.setListener(this, onSoftKeyBoardChangeListener);
android 检测软件键盘弹起落下相关推荐
- Android判断软键盘弹出并隐藏的简单完美解决方案
Android判断软键盘弹出并隐藏的简单完美解决方案 参考文章: (1)Android判断软键盘弹出并隐藏的简单完美解决方案 (2)https://www.cnblogs.com/thare1307/ ...
- android实现软键盘弹出,editText随键盘上移,背景不动
android实现软键盘弹出,editText随键盘上移,背景不动 前段时间有个妹子问我如题的需求,我就想,这种东西网上不是很多吗,自己试过才发现,基本都不行,各种设置配置文件的windowSoftI ...
- Android中软键盘弹出时关于布局的问题
当在Android的layout设计里面如果输入框过多,则在输入弹出软键盘的时候,下面的输入框会有一部分被软件盘挡住,从而不能获取焦点输入. 解决办法: 方法一:在你的activity中的oncrea ...
- Android中软键盘弹出可能遮挡布局
当在Android的layout设计里面如果输入框过多,则在输入弹出软键盘的时候,下面的输入框会有一部分被软件盘挡住,从而不能获取焦点输入. 解决办法: 方法一:在你的activity中的oncrea ...
- android键盘顶起布局原理,android如何把键盘弹出不影响布局?
我想只把键盘和输入框那个layout弹上去 只有键盘弹出,而且toolbar的颜色会延生到下面 这是设置为adjustPan以后,会把整个界面顶上去,我只想顶输入框 activity_chat.xml ...
- 简单可用 Android 安卓软键盘弹出、隐藏监听方法回调
工具类 import android.app.Activity import android.graphics.Rect import android.view.ViewTreeObservercla ...
- android 键盘顶起dialog,Android dialog软键盘弹出顶起View
此文章只为自己随手笔记,可不做参考. 前提: 需求:要求点击一个按钮,弹出一个弹出框,从底部弹出,里面包含输入框和其他按钮.一开始我一直用 RelativeLayout 做布局,因为需要从底部弹出,所 ...
- android判断键盘是否弹出窗口,Android判断软键盘弹出并隐藏的简单完美解决方法(推荐)...
最近项目中有一个编辑框,下面是个ListView.在触发编辑框弹出软键盘后,ListView还能滑动,并且ListView的item还能响应单击.这样的体验效果很不好.于是便想在滑动或单击item时判 ...
- android 检测软键盘,Android:检测软键盘打开
yeradis.. 7 看着日期,可能你有一个问题的解决方案,否则: 以下是我对另一个相关问题的回答:有没有办法判断是否显示了软键盘? 但我在这里复制完整的回复以避免死链接: 请检查您的活动的配置更改 ...
最新文章
- c3074 无法使用带圆括号的_小学生常见易考标点符号使用方法及练习(含答案)...
- Python3.7环境配置
- python可以制作网站吗_Python大神带你用30行代码打造一个网站,爬虫+web不一样的玩法...
- [云炬创业基础笔记]第七张创业团队测试1
- wxWidgets:wxPGProperty类用法
- boost::statechart模块实现使用正交状态和 state_downcast 查询正交区域的状态的测试程序
- 《Genesis-3D游戏引擎系列教程-入门篇》五:脚本
- IRP和IO_STACK_LOCATION
- sql如何取某年某月的第一天和最后一天
- 计算机管理的服务列表,Windows
- 【NOIP2000】【vijos1347】乘积最大
- 如何下载矢量建筑轮廓
- Windows10重新安装软件商店
- Common IO 使用小结
- Python实现八字十神的输出
- 2011年北邮各组组线
- vue-cli和Element-UI搭配web前端
- 淘淘商城23_Linux上的操作_solr集群的搭建、zookeeper集群的搭建
- mtk开发世界时区客制化
- Echarts各个图表data的格式问题