创建多屏幕支持app android

时间:2014-03-29 07:09:13

标签: android layout screen android-screen-support

我正在Android中创建一个必须支持多个屏幕的应用。

为此目的,我已经阅读了很多答案,我最喜欢的一个就是说我可以通过以下名称在 res 文件夹中创建不同的文件夹,

对于小屏幕 layout-small

对于大屏幕布局大

对于超大屏幕 layout-xlarge

我必须使用相同的名称为不同的屏幕创建不同的布局。 例如mylayout.xml

我必须在manifest.xml文件中放入以下代码

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

最后我只需要在我的Activity文件中编写以下行,

  setContentView(R.layout.mylayout);

现在,当我在不同尺寸的屏幕上运行此应用时,它应该根据屏幕分辨率从不同的文件夹中获取布局。

但是我的情况并没有发生这种情况。它只采用布局文件夹中定义的布局。

有些人可以解释一下为什么会发生这种情况,以及如何解决这个问题,以便我的应用可以在各种尺寸的屏幕上有效运行。

4 个答案:

答案 0 :(得分:17)

试试:

  • 布局sw320dp
  • 布局sw480dp
  • 布局sw600dp
  • 布局sw720dp

而不是

  • 布局小,
  • layout-large etc ...

答案 1 :(得分:8)

请参阅以下链接:

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

enter image description here       res / drawable-mdpi / my_icon.png //中等密度的位图       res / drawable-hdpi / my_icon.png //高密度的位图       res / drawable-xhdpi / my_icon.png //用于超高密度的位图

<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>

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

机器人:configChanges = “取向|屏幕尺寸| keyboardHidden”

答案 2 :(得分:4)

在值文件夹中,layout-small等命名约定仅适用于api version less than 3.1的设备。对于大于3.1的api级别,您应创建值为layout-sw600dp的值的文件。阅读此http://developer.android.com/guide/practices/screens_support.html3.1api

enter image description here 像这样你应该为每种类型的设备创建layout-sw600dp,layout-sw720dp。 layout-sw600dp表示此布局适用于宽度最小为600dp的设备 如果你有layout-600dp和layout-sw720dp文件夹。第一个布局文件夹适用于宽度最小为600dp(7英寸平板电脑)至720dp的设备,第二个适用于宽度最小且高于720dp(10英寸平板电脑)的设备。

  

如果您所需的最低版本高于3.1,则不需要   layout-small,layoutxLarge文件夹。否则你必须考虑   两种类型的布局fromats。

答案 3 :(得分:1)

以下是一份快速核对清单,了解如何确保您的应用在不同屏幕上正常显示:

在XML布局文件中指定尺寸时,使用wrap_content, fill_parent,dp单位。 不要在应用程序代码(pixel文件)中使用硬编码的.java值。 不要使用AbsoluteLayout(在Android 1.5中已弃用)。您应该使用RelativeLayout,它使用相对定位来布局其子视图。 为不同的屏幕密度提供替代位图drawable。

花些时间阅读这些screens_support或更好地了解How Android Finds the Best-matching Resource,以便了解资源的位置。