获取StatusBar工具类
常见的获取状态栏高度的工具类如下:
public static int getStatusBarHeightCompat(Context context) {
int result = 0;
int resId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resId > 0) {
result = context.getResources().getDimensionPixelOffset(resId);
}
if (result <= 0) {
result = context.getResources().getDimensionPixelOffset(R.dimen.dimen_25dp);
}
return result;
}
这里的status_bar_height是哪里来的呢?
StatusBar#getStatusBarHeight()
我们看下StatusBar#getStatusBarHeight()的源码:
com.android.systemui.statusbar.phone.StatusBar#getStatusBarHeight()
public int getStatusBarHeight() {
if (mNaturalBarHeight < 0) {
final Resources res = mContext.getResources();
mNaturalBarHeight =
res.getDimensionPixelSize(com.android.internal.R.dimen.status_bar_height);
}
return mNaturalBarHeight;
}
从这里可以看出系统是通过com.android.internal.R.dimen.status_bar_height
这个dimen的值来确定状态栏的高度的,这样也就解释了我们的工具类的来源了。