Android应用层获取设备屏幕分辨率的方法

直接上代码:

        DisplayMetrics dm = new DisplayMetrics();
        Display display = getWindowManager().getDefaultDisplay();
        display.getRealMetrics(dm);//display.getMetrics(dm);
        Log.i("getScreenSize","width:"+dm.widthPixels+",height:"+dm.heightPixels);

注意: 1.使用display.getMetrics(dm)和使用display.getRealMetrics(dm)获取到结果不一样。

/**
     * Gets display metrics based on the real size of this display.
     * 

* The size is adjusted based on the current rotation of the display. *

* The real size may be smaller than the physical size of the screen when the * window manager is emulating a smaller display (using adb shell wm size). *

* * @param outMetrics A {@link DisplayMetrics} object to receive the metrics. */ public void getRealMetrics(DisplayMetrics outMetrics) { synchronized (this) { updateDisplayInfoLocked(); mDisplayInfo.getLogicalMetrics(outMetrics, CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO, null); } } /** * Gets display metrics that describe the size and density of this display. * The size returned by this method does not necessarily represent the * actual raw size (native resolution) of the display. *

* 1. The returned size may be adjusted to exclude certain system decor elements * that are always visible. *

* 2. It may be scaled to provide compatibility with older applications that * were originally designed for smaller displays. *

* 3. It can be different depending on the WindowManager to which the display belongs. *

* - If requested from non-Activity context (e.g. Application context via * {@code (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE)}) * metrics will report the size of the entire display based on current rotation and with * subtracted system decoration areas. *

* - If requested from activity (either using {@code getWindowManager()} or * {@code (WindowManager) getSystemService(Context.WINDOW_SERVICE)}) resulting metrics will * correspond to current app window metrics. In this case the size can be smaller than physical * size in multi-window mode. *

* * @param outMetrics A {@link DisplayMetrics} object to receive the metrics. */ public void getMetrics(DisplayMetrics outMetrics) { synchronized (this) { updateDisplayInfoLocked(); mDisplayInfo.getAppMetrics(outMetrics, mDisplayAdjustments); } }

 

你可能感兴趣的:(android,复习)