在网上搜了好久,有几个方法是可行的,比如给视图添加一个布局发生变化的时候,做根视图与当前视图的高度差,来做键盘显示隐藏的监听.....
这个思路貌似可以,但是在你的app中如果没有对视图的大小位置做任何的改变或者你创建是视图不是滚动视图,这就行不通的。。。
所以我给出的方法是,不管你的视图大小位置有没有发生变化,都可以做监听。。。(因为我开发的游戏是视图大小位置是不做改变的)
1:导入库:
import android.view.ViewTreeObserver;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
2:加个键盘是否显示的标志:
boolean m_bShowKeyBoardAjust =false;
3:加监听:(在你游戏初始化,创建好视图后添加)
你的视图.getViewTreeObserver().addOnGlobalLayoutListener( new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout(){
if(m_bShowKeyBoardAjust)
{
Runnable edit_focuse_event = new Runnable()
{
public void run()
{
InputMethodManager imm = (InputMethodManager)getSystemService( Context.INPUT_METHOD_SERVICE );
if( imm != null && imm.isActive())
{
String name = m_pText.getText().toString();
//设置你的游戏或app 的ui 是否失去焦点等等设置,告诉说,键盘显示结束
m_bShowKeyBoardAjust = false;
}
handler.removeCallbacks(this);
}
};
handler.postDelayed(edit_focuse_event, 1000);
}
else
{
m_bShowKeyBoardAjust = false;
InputMethodManager imm = (InputMethodManager)getSystemService( Context.INPUT_METHOD_SERVICE );
if( imm != null && imm.isActive())
{
String name = m_pText.getText().toString();
//键盘已经隐藏,告诉你的游戏或app 的ui 是否失去焦点等等设置
}
}
}
});
4:然后就是在你游戏或者app 里显示键盘回调给android 显示键盘是 把 m_bShowKeyBoardAjust = true
好了就这样,目前这样,给测试,测试结果还是ok的