• android 监听软键盘的收起与打开


    参考: http://toughcoder.net/blog/2015/10/09/android-trick-detect-soft-keyboard-show-slash-hide/

     1 package xiamai.testidea;
     2 
     3 import android.app.Activity;
     4 import android.graphics.Rect;
     5 import android.os.Bundle;
     6 import android.util.DisplayMetrics;
     7 import android.view.View;
     8 import android.view.ViewGroup;
     9 import android.view.ViewTreeObserver;
    10 
    11 /**
    12  * Created by Administrator on 2016/6/15.
    13  */
    14 public class BaseActivity extends Activity
    15 {
    16     private OnKeyboardListener keyboardListener;
    17     private boolean     keyboardVisible = false;
    18     private ViewTreeObserver.OnGlobalLayoutListener globalLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener()
    19     {
    20         @Override
    21         public void onGlobalLayout()
    22         {
    23             if (keyboardIsVisible(getRootView()))
    24             {
    25                 if (!keyboardVisible)
    26                 {
    27                     keyboardVisible = true;
    28                     keyboardListener.onKeyboardShow();
    29                 }
    30             }
    31             else
    32             {
    33                 if (keyboardVisible)
    34                 {
    35                     keyboardVisible = false;
    36                     keyboardListener.onKeyboardHidden();
    37                 }
    38             }
    39         }
    40     };
    41 
    42     public View getRootView()
    43     {
    44         return ((ViewGroup)findViewById(android.R.id.content)).getChildAt(0);
    45     }
    46 
    47     protected void setOnKeyboardListener(OnKeyboardListener keyboardListener)
    48     {
    49         this.keyboardListener = keyboardListener;
    50         getRootView().getViewTreeObserver().addOnGlobalLayoutListener(globalLayoutListener);
    51     }
    52 
    53     private boolean keyboardIsVisible(View rootView)
    54     {
    55         final int softKeyboardHeight = 100;
    56         Rect r = new Rect();
    57         rootView.getWindowVisibleDisplayFrame(r);
    58         DisplayMetrics dm = rootView.getResources().getDisplayMetrics();
    59         int heightDiff = rootView.getBottom() - r.bottom;
    60         return heightDiff > softKeyboardHeight * dm.density;
    61     }
    62 
    63     public interface OnKeyboardListener
    64     {
    65         void onKeyboardShow();
    66         void onKeyboardHidden();
    67     }
    68 }
    View Code
     1 package xiamai.testidea;
     2 
     3 import android.os.Bundle;
     4 import android.util.Log;
     5 
     6 /**
     7  * Created by Administrator on 2016/7/11.
     8  */
     9 public class KeyboardTestActivity extends BaseActivity
    10     implements BaseActivity.OnKeyboardListener
    11 {
    12     @Override
    13     protected void onCreate(Bundle savedInstanceState)
    14     {
    15         super.onCreate(savedInstanceState);
    16         setContentView(R.layout.root_activity);
    17         setOnKeyboardListener(this);
    18     }
    19 
    20     @Override
    21     public void onKeyboardShow()
    22     {
    23         Log.e("KeyboardEvent", "键盘打开");
    24     }
    25 
    26     @Override
    27     public void onKeyboardHidden()
    28     {
    29         Log.e("KeyboardEvent", "键盘关闭");
    30     }
    31 }
    View Code
  • 相关阅读:
    HDOJ 1015 Safecracker
    POJ3187 虽然超时了,但是还得纪念一下
    HDOJ 1248
    HDOJ 1161
    动态规划——砝码称重
    P01P02P03各种背包!!
    对基类与派生类对象和指针赋值的小结
    程序员技术练级攻略
    CodeForces 愚人节题目
    java入门
  • 原文地址:https://www.cnblogs.com/emyueguang/p/5661003.html
Copyright © 2020-2023  润新知