不知道你们遇没遇到过h5页面加载全屏网络图片屏幕下面有白边的bug,之所以会这样是因为H5获取的屏幕宽高值是可用宽高值(不包括底部虚拟导航栏),而不是真实的屏幕的宽高(包括底部虚拟导航栏)。话不多说,直接上代码,就是干!!!
import android.content.Context;
import android.graphics.Point;
import android.os.Build;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.WindowManager;
/**
* Author: Yongbo Yin
* Description:
* Date: 2019/9/20 9:36
*/
public class ScreenUtil {
/**
* 获取屏幕宽度(不包含底部导航栏)
*/
public static int getScreenWidth(Context context) {
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics outMetrics = new DisplayMetrics();
if (wm != null) {
wm.getDefaultDisplay().getMetrics(outMetrics);
}
return outMetrics.widthPixels;
}
/**
* 获得屏幕高度(不包含底部导航栏)
*/
public static int getScreenHeight(Context context) {
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics outMetrics = new DisplayMetrics();
if (wm != null) {
wm.getDefaultDisplay().getMetrics(outMetrics);
}
return outMetrics.heightPixels;
}
/**
* 获取屏幕真实宽度(包含底部导航栏)
*/
public static int getScreenRealWidth(Context context) {
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
final Display display = windowManager.getDefaultDisplay();
Point outPoint = new Point();
if (Build.VERSION.SDK_INT >= 19) {
// 可能有虚拟按键的情况
display.getRealSize(outPoint);
} else {
// 不可能有虚拟按键
display.getSize(outPoint);
}
int mRealSizeWidth;//手机屏幕真实宽度
mRealSizeWidth = outPoint.x;
return mRealSizeWidth;
}
/**
* 获得屏幕真实高度(包含底部导航栏)
*/
public static int getScreenRealHeight(Context context) {
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
final Display display = windowManager.getDefaultDisplay();
Point outPoint = new Point();
if (Build.VERSION.SDK_INT >= 19) {
// 可能有虚拟按键的情况
display.getRealSize(outPoint);
} else {
// 不可能有虚拟按键
display.getSize(outPoint);
}
int mRealSizeHeight;//手机屏幕真实高度
mRealSizeHeight = outPoint.y;
return mRealSizeHeight;
}
}