Android Popwindow全面屏

2020-07-08  本文已影响0人  AwaitZhang

DisplayMetrics metrics = new DisplayMetrics();

mContext.getWindowManager().getDefaultDisplay().getMetrics(metrics);

mWidth = metrics.widthPixels;

mHeight = metrics.heightPixels;

setWidth(mWidth);

setHeight(mHeight + getStatusBarHeight(mContext) + getBottomKeyboardHeight(mContext));

popwindow.this.setClippingEnabled(false);

/**

* 获取状态栏高度

*

* @param context context

* @return 状态栏高度

*/

public static int getStatusBarHeight(Context context) {

    // 获得状态栏高度

    int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");

    return context.getResources().getDimensionPixelSize(resourceId);

}

/**

* 获取底部虚拟键盘的高度

*/

public static int getBottomKeyboardHeight(Activity context) {

    int screenHeight = getAccurateScreenDpi(context)[1];

    DisplayMetrics dm = new DisplayMetrics();

    context.getWindowManager().getDefaultDisplay().getMetrics(dm);

    int heightDifference = screenHeight - dm.heightPixels;

    return heightDifference;

}

/**

* 获取精确的屏幕大小

*/

public static int[] getAccurateScreenDpi(Activity context) {

    int[] screenWH = new int[2];

    Display display = context.getWindowManager().getDefaultDisplay();

    DisplayMetrics dm = new DisplayMetrics();

    try {

        Class<?> c = Class.forName("android.view.Display");

        Method method = c.getMethod("getRealMetrics", DisplayMetrics.class);

        method.invoke(display, dm);

        screenWH[0] = dm.widthPixels;

        screenWH[1] = dm.heightPixels;

    } catch (Exception e) {

        e.printStackTrace();

}

    return screenWH;

}

上一篇下一篇

猜你喜欢

热点阅读