类实现:

  public SoftKeyboardState(Activity activity) {    this.decorView = activity.findViewById(android.R.id.content);    initKeyboardListener();  }  private void initKeyboardListener() {    decorView.getViewTreeObserver().addOnGlobalLayoutListener(      new ViewTreeObserver.OnGlobalLayoutListener(){        private final Rect windowVisibleDisplayFrame = new Rect();        private int lastVisibleDecorViewHeight;        @Override        public void onGlobalLayout() {          decorView.getWindowVisibleDisplayFrame(windowVisibleDisplayFrame);          final int visibleDecorViewHeight = windowVisibleDisplayFrame.height();          Log.i(TAG,"  onGlobalLayout called " + visibleDecorViewHeight+ "  "+ lastVisibleDecorViewHeight);          if (lastVisibleDecorViewHeight != 0) {            if (lastVisibleDecorViewHeight - visibleDecorViewHeight > 200) {              if (listener != null)listener.onKeyboardStateChanged(true);            } else if (visibleDecorViewHeight - lastVisibleDecorViewHeight > 200) {              if (listener != null)listener.onKeyboardStateChanged(false);            }          }          lastVisibleDecorViewHeight = visibleDecorViewHeight;        }      });  }  public void setOnKeyboardStateChangedListener(OnKeyboardStateChangedListener listener) {    this.listener = listener;  }  public interface OnKeyboardStateChangedListener {     void onKeyboardStateChanged(boolean isShown);  }}

注意以上类只能监听普通的activity,如果theme中有如下设置,会不生效:

        true

更多相关文章

  1. 代码中设置drawableleft
  2. android 3.0 隐藏 系统标题栏
  3. Android开发中activity切换动画的实现
  4. Android(安卓)学习 笔记_05. 文件下载
  5. Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
  6. 技术博客汇总
  7. android 2.3 wifi (一)
  8. AndRoid Notification的清空和修改
  9. Android中的Chronometer

随机推荐

  1. 收好100个最常用的PHP函数
  2. 详解PHP使用gearman进行异步的邮件或短信
  3. php session 会话(专题)
  4. PHP如何结合MySQL进行千万级数据处理
  5. 分析PHP中PHPMailer如何发邮件
  6. 案例分析PHP Web表单生成器
  7. php获取当前时间戳、日期并精确到毫秒(三
  8. PHP使用POP3读取邮箱接收邮件的实例解析
  9. 详解之php反序列化
  10. 教你用php将二维码和文字结合到一个背景