支持android中的所有屏幕尺寸?

时间:2014-03-24 06:49:02

标签: android layout screen

我知道这个问题已被问过很多次了。但我无法找到最可靠的解决方案。

我已经按照开发人员支持android中的每一步 Support Multiple Screen

将图像放在不同文件夹中以适应不同尺寸。 为设备屏幕制作不同的布局文件夹。 但问题仍然存在于从4.7英寸到5.0英寸的设备中。 布局在这些设备上受到很大干扰。

克服这一点的最佳方法是什么。

5 个答案:

答案 0 :(得分:3)

基本上某些设备属于大型或普通组,但它们在高度和宽度方面存在很大差异,例如Nexus-4 4.7"维度为768x1280,另一个设备5.1"具有维度{{ 1}}。因此,您可以根据高度和宽度创建布局文件夹。例如 - 480x800。然后根据您的要求在这些布局中设置视图。

答案 1 :(得分:0)

如果您正在设计任何表格,请选择Match Parent,不要选择硬核像素位置。使用相对布局。

请告诉您有关兼容性问题的更多信息?

答案 2 :(得分:0)

请参阅以下链接:

Multipal screen size handling

对于不同的屏幕尺寸,以下是应用程序中的资源目录列表,它为不同的屏幕尺寸和不同的位图绘图提供不同的布局设计,适用于小型,中型,高密度和超高密度屏幕。

      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

Manifest中的以下代码支持所有dpis。

  <supports-screens android:smallScreens="true" 
      android:normalScreens="true" 
      android:largeScreens="true"
      android:xlargeScreens="true"
      android:anyDensity="true" />

答案 3 :(得分:0)

请参阅以下链接:

http://developer.android.com/guide/practices/screens_support.html

对于不同的屏幕尺寸,以下是应用程序中的资源目录列表,它为不同的屏幕尺寸提供不同的布局设计,为小,中,高和超高密度屏幕提供不同的位图可绘制。     您可以在res文件夹中使用不同大小的布局文件,也可以根据密度对可绘制图像进行更改。

      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



 <supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="true"
        android:resizeable="true"
        android:smallScreens="false"
        android:xlargeScreens="true" 
       />

    <compatible-screens>
        <screen
            android:screenDensity="ldpi"
            android:screenSize="small" />
        <screen
            android:screenDensity="mdpi"
            android:screenSize="normal" />
        <screen
            android:screenDensity="xhdpi"
            android:screenSize="large" />
        <screen
            android:screenDensity="xhdpi"
            android:screenSize="xlarge" />        
    </compatible-screens>

然后任何活动都使用这一行..

android:configChanges="orientation|screenSize|keyboardHidden"

答案 4 :(得分:0)

如果您需要绝对测量屏幕的密度,可以使用以下代码:

从某个地方的某个地方得到这个,但仍然相关。享受吧!

DisplayMetrics metrics = new DisplayMetrics(); 
try { 
WindowManager winMgr = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE)        
; 
winMgr.getDefaultDisplay().getMetrics(metrics); 
} 
catch (Exception e) { 
metrics.density = 1; 
}

值metrics.density现在包含屏幕密度的度量,160dpi密度作为&#39;基线&#39;。更多信息可以在这里找到:

http://developer.android.com/reference/android/util/DisplayMetrics.html#density