猿问

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

在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());}


慕妹3242003
浏览 836回答 3
3回答

墨色风雨

使用此代码,您可以获得运行时显示的宽度和高度: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();

慕莱坞森

有一个非常简单的答案,而且没有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;     }

九州编程

仅为了更新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(); }
随时随地看视频慕课网APP

相关分类

Android
我要回答