Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 查找设备分辨率_Android - Fatal编程技术网

Android 查找设备分辨率

Android 查找设备分辨率,android,Android,我尝试了两种方法来查找设备尺寸(宽度和高度): getWindowManager().getDefaultDisplay() ((WindowManager)getSystemService(窗口服务)).getDefaultDisplay() 但这两种方法都不可靠,因为它们有时给了我错误的维度。对于分辨率为480x800的HTC desire,它会给我320x533的尺寸,这是不正确的。有人能推荐一种更可靠的方法吗?这应该行得通 Display display = activity.getWi

我尝试了两种方法来查找设备尺寸(宽度和高度):

  • getWindowManager().getDefaultDisplay()
  • ((WindowManager)getSystemService(窗口服务)).getDefaultDisplay()
  • 但这两种方法都不可靠,因为它们有时给了我错误的维度。对于分辨率为480x800的HTC desire,它会给我320x533的尺寸,这是不正确的。有人能推荐一种更可靠的方法吗?

    这应该行得通

    Display display = activity.getWindowManager().getDefaultDisplay();
    int width = display.getWidth();
    int Height = display.getHeight();
    
    这也将有助于:

    public static String getDisplayPixelSize(Activity activity) {
        DisplayMetrics metrics = new DisplayMetrics();
        activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
        return metrics.widthPixels + " x " + metrics.heightPixels;
    }
    

    以下解决方案对我有效:

    public void setDeviceDimensions() {
            WindowManager w = getWindowManager();
            Display d = w.getDefaultDisplay();
            width = d.getWidth();
            height = d.getHeight();
    
        }
    
    以及清单中的以下条目:

    <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="9" />
    

    您应该对以下术语有清晰的概念

    屏幕大小: 实际物理尺寸,以屏幕对角线测量。 为了简单起见,Android将所有实际屏幕大小分为四种通用大小:小、普通、大和超大

    屏幕密度: 屏幕物理区域内的像素数量;通常称为dpi(每英寸点数)。例如,与“正常”或“高”密度屏幕相比,“低”密度屏幕在给定物理区域内的像素更少。 为了简单起见,Android将所有实际屏幕密度分为四个通用密度:低、中、高和超高

    方向: 从用户的角度看屏幕的方向。这是横向或纵向,意味着屏幕的纵横比分别为宽或高。请注意,默认情况下,不仅不同的设备以不同的方向运行,而且当用户旋转设备时,方向可能会在运行时发生变化

    分辨率: 屏幕上物理像素的总数。当添加对多屏幕的支持时,应用程序不能直接使用分辨率;应用程序应仅关注屏幕尺寸和密度,如广义尺寸和密度组所规定

    密度无关像素(dp): 定义UI布局时应使用的虚拟像素单位,用于以与密度无关的方式表示布局尺寸或位置。 密度无关像素相当于160 dpi屏幕上的一个物理像素,这是系统为“中等”密度屏幕假设的基线密度。在运行时,系统根据所用屏幕的实际密度,根据需要透明地处理dp单元的任何缩放。dp单元到屏幕像素的转换很简单:px=dp*(dpi/160)。例如,在240 dpi屏幕上,1 dp等于1.5个物理像素。在定义应用程序的UI时,应始终使用dp单位,以确保在不同密度的屏幕上正确显示UI

    参考:android开发者网站