Android屏幕信息参数概念理解:
一、获取屏幕的实际高度(包括状态栏与导航栏)
Display defaultDisplay = manager.getDefaultDisplay();
//屏幕实际高度
Point realPoint = new Point();
defaultDisplay.getRealSize(realPoint);
二、屏幕显示内容的宽度(不包括状态栏与导航栏)
/屏幕显示高度
DisplayMetrics outMetrics = new DisplayMetrics();
defaultDisplay.getMetrics(outMetrics);
三、获取显示内容的rootview的信息
final Rect r = new Rect();
activityRootView.getRootView().getWindowVisibleDisplayFrame(r);
1、r.top 状态栏的信息高度
2、r.bottom - r.top :显示内容的真实高度(rootview)
最后键盘高度:
int heightDiff = outMetrics.heightPixels - (r.bottom - r.top);
软键盘的弹出收起的监听:
view.rootView.viewTreeObserver.addOnGlobalLayoutListener {
val r = Rect()
view.rootView.getWindowVisibleDisplayFrame(r)
//屏幕显示高度
val outMetrics = DisplayMetrics()
(view.context
.getSystemService(WINDOW_SERVICE) as WindowManager).defaultDisplay.getMetrics(
outMetrics
)
val heightDiff = outMetrics.heightPixels - (r.bottom - r.top)
val navigationBarHeight: Int = view.getContext().navigationBarHeight
if (heightDiff > navigationBarHeight){ //软键盘弹出
//软键盘弹出高度 heightDiff
}else{ //
//软键盘收起
}
}
//获取导航栏的高度
val Context?.navigationBarHeight: Int
get() {
this ?: return 0
val resourceId: Int = resources.getIdentifier("navigation_bar_height", "dimen", "android")
var height = 0
if (resourceId > 0) {
height = resources.getDimensionPixelSize(resourceId)
}
return height
}