Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.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 如何知道哪款手机支持哪种布局(hdpi、mdpi和xhpi)?_Android_Android Layout_Android Resources_Android Resolution - Fatal编程技术网

Android 如何知道哪款手机支持哪种布局(hdpi、mdpi和xhpi)?

Android 如何知道哪款手机支持哪种布局(hdpi、mdpi和xhpi)?,android,android-layout,android-resources,android-resolution,Android,Android Layout,Android Resources,Android Resolution,对于如何确定哪些手机支持哪些布局类型,我有点困惑。我做了一些研究,但没有找到令人满意的答案 例如,我找到了以下指南: xlarge screens are at least 960dp x 720dp large screens are at least 640dp x 480dp normal screens are at least 470dp x 320dp small screens are at least 426dp x 320dp 不过,我仍有一些顾虑: 三星格兰德(480*80

对于如何确定哪些手机支持哪些布局类型,我有点困惑。我做了一些研究,但没有找到令人满意的答案

例如,我找到了以下指南:

xlarge screens are at least 960dp x 720dp
large screens are at least 640dp x 480dp
normal screens are at least 470dp x 320dp
small screens are at least 426dp x 320dp
不过,我仍有一些顾虑:

  • 三星格兰德(480*800)HTC野火S(320*480)都支持MDPI。这些屏幕有非常不同的分辨率,但有相同的布局类型

  • Galaxy note 2(1280*720)支持HDPI。如果HD(720p)仅为HDPI,什么设备/分辨率支持XHDPI

  • 我已经在这里问了一个相关的问题:

  • 然而,我最重要的问题是:如何知道哪些设备或屏幕分辨率支持每种布局类型?


  • 看看这些细节:android自己管理所有这些,你只需要在相关文件夹中提供布局和图像

    res/layout/my_layout.xml             // layout for normal screen size ("default")
    res/layout-small/my_layout.xml       // layout for small screen size
    res/layout-large/my_layout.xml       // layout for large screen size
    res/layout-xlarge/my_layout.xml      // layout for extra large screen size
    res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation
    
    res/drawable-mdpi/my_icon.png        // bitmap for medium density
    res/drawable-hdpi/my_icon.png        // bitmap for high density
    res/drawable-xhdpi/my_icon.png       // bitmap for extra high density
    

    Android将mdpi(160像素/英寸)作为基本密度。因此,对于mdpi设备,1 dp=1像素。密度越高,每英寸的像素就越多(hdpi为240,xhdpi为320)

    Android自身自动缩放:

    Android试图让图形图像占据屏幕上相同的物理尺寸,而不管设备像素密度如何因此,如果它找到的只是一个mdpi资源,而设备是hdpi,那么它将以240/160=150%的比例缩放图形,并且将使xhdpi的图形大小加倍。

    使用不同版本的图形:

    如果您不希望这种自动缩放(这会使图形看起来很差),您可以简单地提供自己版本的图形资源,以便在更高的密度下使用。这些图形的大小应该与Android扩展mdpi资源的大小相同

    注意:图像文件中存储的像素/英寸与此无关。这一切都基于您将图形文件放在项目的资源目录中的位置任何放置在res/drawable中的图形都被认为适合mdpi显示,放置在res/drawable mdpi中的图形也是如此。在res/drawable hdpi中找到的图像文件被认为适合hdpi显示等。当您的程序在特定设备上运行时,Android将首先寻找与该设备显示密度相匹配的图形。如果它没有找到一个,而是为不同的密度找到一个,它将使用该密度,并根据上述规则自动缩放图像

    由于ldpi、mdpi和hdpi指的是屏幕密度,这意味着一英寸可以容纳多少像素

    它们之间的像素比率为:

    ldpi = 1:0.75
    mdpi = 1:1
    hdpi = 1:1.5
    xhdpi = 1:2
    xxhdpi = 1:3
    
    因此,让我们拍摄一张大小约为100X100的图像:

    for mdpi it should be 100X100
    for ldpi it should be 75X75
    for hdpi it should be 150X150
    for xhdpi it should be 200X200
    for xxhdpi it should be 300X300
    

    这样,对于大小相同但DPI不同的屏幕,所有图像在屏幕上看起来都是相同的大小。

    为什么需要知道设备型号名称?您不应该关心所有设备的屏幕大小。只需制作不同的布局(普通、hdpi、xhdpi)&每个设备都将根据其dpi运行布局。顺便提一下Galaxy Note 2拥有267 dpi屏幕。所以,它将使用xhdpi布局。我问这个问题bcz我使用webview,我可以向你展示tube视频,这样它在所有设备上显示不同的gui。如果我想显示来自外部源的图像,我也需要这个。