为了账号安全,请及时绑定邮箱和手机立即绑定

在Android中获取屏幕宽度和高度

在Android中获取屏幕宽度和高度

慕妹3242003 2019-07-11 14:55:31
在Android中获取屏幕宽度和高度如何获得屏幕的宽度和高度,并在以下内容中使用此值:@Override protected void onMeasure(int widthSpecId, int heightSpecId) {     Log.e(TAG, "onMeasure" + widthSpecId);     setMeasuredDimension(SCREEN_WIDTH, SCREEN_HEIGHT -          game.findViewById(R.id.flag).getHeight());}
查看完整描述

3 回答

?
墨色风雨

TA贡献1853条经验 获得超6个赞

使用此代码,您可以获得运行时显示的宽度和高度:

DisplayMetrics displayMetrics = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int height = displayMetrics.heightPixels;int width = displayMetrics.widthPixels;

在视图中,您需要这样做:

((Activity) getContext()).getWindowManager()
                         .getDefaultDisplay()
                         .getMetrics(displayMetrics);

在某些情况下,在设备有导航栏的情况下,必须在运行时检查:

public boolean showNavigationBar(Resources resources){
    int id = resources.getIdentifier("config_showNavigationBar", "bool", "android");
    return id > 0 && resources.getBoolean(id);}

如果设备有导航条,则计算其高度:

private int getNavigationBarHeight() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        int usableHeight = metrics.heightPixels;
        getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
        int realHeight = metrics.heightPixels;
        if (realHeight > usableHeight)
            return realHeight - usableHeight;
        else
            return 0;
    }
    return 0;}

设备的最终高度是:

int height = displayMetrics.heightPixels + getNavigationBarHeight();


查看完整回答
反对 回复 2019-07-11
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

有一个非常简单的答案,而且没有PASS上下文。

public static int getScreenWidth() {
    return Resources.getSystem().getDisplayMetrics().widthPixels;}public static int getScreenHeight() {
    return Resources.getSystem().getDisplayMetrics().heightPixels;}

注意:如果您想要的高度包括导航栏,请使用下面的方法

WindowManager windowManager =
        (WindowManager) BaseApplication.getApplication().getSystemService(Context.WINDOW_SERVICE);
    final Display display = windowManager.getDefaultDisplay();
    Point outPoint = new Point();
    if (Build.VERSION.SDK_INT >= 19) {
        // include navigation bar
        display.getRealSize(outPoint);
    } else {
        // exclude navigation bar
        display.getSize(outPoint);
    }
    if (outPoint.y > outPoint.x) {
        mRealSizeHeight = outPoint.y;
        mRealSizeWidth = outPoint.x;
    } else {
        mRealSizeHeight = outPoint.x;
        mRealSizeWidth = outPoint.y;
    }


查看完整回答
反对 回复 2019-07-11
?
九州编程

TA贡献1785条经验 获得超4个赞

仅为了更新Parag和SPK的答案,使其与当前SDK从不推荐的方法中的向后兼容性对齐:

int Measuredwidth = 0;  int Measuredheight = 0;  Point size = new Point();WindowManager w = getWindowManager();
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)    {
    w.getDefaultDisplay().getSize(size);
    Measuredwidth = size.x;
    Measuredheight = size.y; }else{
    Display d = w.getDefaultDisplay(); 
    Measuredwidth = d.getWidth(); 
    Measuredheight = d.getHeight(); }


查看完整回答
反对 回复 2019-07-11
  • 3 回答
  • 0 关注
  • 835 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信