2013-07-28 85 views
1

我为Nexus 7构建了一个简单的应用程序。我使用以下代码获取DP单元的屏幕尺寸。Nexus 7实际屏幕尺寸

this.getResources().getConfiguration().screenWidthDp; 
this.getResources().getConfiguration().screenHeightDp; 

其中“this”是MainActivity上下文对象。

我得到这些值:600 DP宽度和888 DP的高度。

像素密度是tvdpi它是213,和DP的像素的比率为1.33

我用这个公式

pixels = dips * (density/160) 

这使我要高度

pixels = 888 * (213/160) = 1182.15. 

我知道Nexus 7屏幕的像素尺寸为800 x 1280.在此计算中,缺失的100个像素高度在哪里?还是我做错了什么?

回答

2

下应该给你的实际显示尺寸为点:

private Point getDisplaySize(Context context) { 

    if (Build.VERSION.SDK_INT >= 17) { 
     return getDisplaySizeMinSdk17(context); 
    } else if (Build.VERSION.SDK_INT >= 13) { 
     return getDisplaySizeMinSdk13(context); 
    } else { 
     return getDisplaySizeMinSdk1(context); 
    } 
} 

@TargetApi(17) 
private Point getDisplaySizeMinSdk17(Context context) { 
    final WindowManager windowManager = (WindowManager) context 
      .getSystemService(Context.WINDOW_SERVICE); 
    final Display display = windowManager.getDefaultDisplay(); 

    final DisplayMetrics metrics = new DisplayMetrics(); 
    display.getRealMetrics(metrics); 

    final Point size = new Point(); 
    size.x = metrics.widthPixels; 
    size.y = metrics.heightPixels; 

    return size; 
} 

@TargetApi(13) 
private Point getDisplaySizeMinSdk13(Context context) { 

    final WindowManager windowManager = (WindowManager) context 
      .getSystemService(Context.WINDOW_SERVICE); 
    final Display display = windowManager.getDefaultDisplay(); 

    final Point size = new Point(); 
    display.getSize(size); 

    return size; 
} 

@SuppressWarnings("deprecation") 
private Point getDisplaySizeMinSdk1(Context context) { 

    final WindowManager windowManager = (WindowManager) context 
      .getSystemService(Context.WINDOW_SERVICE); 
    final Display display = windowManager.getDefaultDisplay(); 

    final Point size = new Point(); 
    size.x = display.getWidth(); 
    size.y = display.getHeight(); 

    return size; 
} 
+0

完美的作品,谢谢:) – Vlad