为多个屏幕设计布局

19

我是Android新手,想要设计一个可以在所有Android手机和平板电脑屏幕上运行的布局。有没有一种方法可以做到这一点?


1
文档已经非常详细地涵盖了这个问题。http://developer.android.com/guide/practices/screens_support.html - Kuffs
请访问以下链接: http://developer.android.com/guide/practices/screens_support.html - user493244
我需要为Nexus 9和Nexus 10设备创建哪些布局文件夹? - Dhaval Khant
5个回答

95

您需要为不同的屏幕尺寸创建不同的布局。如果要支持所有屏幕,您需要创建以下布局:

  1. 低密度小屏幕 QVGA 240x320(120dpi):

    layout-small-ldpi (240x320)  
    layout-small-land-ldpi (320x240)
    
  2. 低密度普通屏幕 WVGA400 240x400 (x432) (120dpi):

  3. layout-ldpi  (240 x 400 )
    layout-land-ldpi  (400 x 240 )
    
  4. 中等密度常规屏幕HVGA 320x480(160dpi):

  5. layout-mdpi (320 x 480 )
    layout-land-mdpi (480 x 320 )
    
  6. 中等密度大屏幕 HVGA 320x480(160dpi):

  7. layout-large-mdpi (320 x 480 )
    layout-large-land-mdpi (480 x 320)
    
  8. Galaxy Tab(240 dpi):

  9. layout-large  (600 x 1024) 
    layout-large-land  (1024 x 600)
    
  10. 高密度普通屏幕 WVGA800 480x800 (x854) (240 dpi):

  11. layout-hdpi (480 x 800)
    layout-land-hdpi (800 x 480)
    
  12. Xoom(中等密度大尺寸但1280x800分辨率)(160 dpi):

  13. layout-xlarge (800 x 1280)
    layout-xlarge-land (1280 x 800)
    

同时,在.manifest文件中添加以下代码:

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

1
我该如何创建一个适用于540x960像素的布局,比如摩托罗拉Atrix? - gandarez
是的。我已经为mdpi制作好了一个30像素 x 30像素的图像。但是对于800x1280屏幕来说还不够。 对于320x480的分辨率来说它很好,但对于800x1280不行。 - user861973
我有大约10个活动,所以根据这个,我需要创建10x14 = 140个布局? :O - ruben
不错。但是我该如何处理TextView的不同textSize呢?这样做更好吗? - Pratik Butani
@Dhaval Khant:你能管理540x960的屏幕布局吗?如果可以,你是用什么方法? - Harshal Kalavadiya
显示剩余16条评论

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

你可能应该阅读这个:


6
除了传统的supports-screens参数外,还引入了3.2版本中推出的新的尺寸限定符。使用这些新的限定符可以根据布局可用空间指定不同的资源配置,相比于传统的屏幕尺寸组(小、正常、大和超大),这些新的限定符提供了更多控制应用程序所支持的具体屏幕尺寸的能力。
表2总结了您可以为布局指定的不同资源配置。
为了帮助您针对不同类型的设备定位一些设计,以下是一些典型屏幕宽度的数字:
320dp:典型的手机屏幕(240x320 ldpi,320x480 mdpi,480x800 hdpi等)。
480dp:介于平板电脑和手机之间的Streak平板电脑(480x800 mdpi)。
600dp:7英寸平板电脑(600x1024 mdpi)。
720dp:10英寸平板电脑(720x1280 mdpi,800x1280 mdpi等)。
使用表2中的大小限定符,您的应用程序可以在手持设备和平板电脑之间使用任意数量的宽度和/或高度切换不同的布局资源。例如,如果600dp是您的平板电脑布局支持的最小可用宽度,则可以提供以下两组布局:
res/layout/main_activity.xml #适用于手机 res/layout-sw600dp/main_activity.xml #适用于平板电脑
<manifest ... > <supports-screens android:requiresSmallestWidthDp="600" /> ... </manifest>

3
如果您想使用仅一个可随屏幕尺寸缩放的布局 xml,您可以使用 sdp sdk
添加 sdp sdk:
dependencies {
    compile 'com.intuit.sdp:sdp-android:1.0.2'
}

您可以定义一个可扩展的TextView:

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="A scalable text"
        android:textSize="@dimen/_12sdp" />

1

如果您正在使用 android 1.6,则可以尝试以下不同的布局方式:

  1. 如果宽度 - 高度 - 密度:320 - 480 - 160,则 res/layout 文件夹名称为:(layout-medium-mdpi)
  2. 如果宽度 - 高度 - 密度:480 - 800 - 160,则 res/layout 文件夹名称为:(layout-large-mdpi)
    或者如果宽度 - 高度 - 密度:480 - 800 - 240,则 res/layout 文件夹名称为:(layout-medium-hdpi)

它可以正常工作...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接