支持多种屏幕尺寸 - Android

Sni*_*per 5 android android-screen android-screen-support

我将在Android中开发新的应用程序.此应用程序应仅以纵向(即使是平板电脑)工作.在手机和平​​板电脑上,UI和布局设计应该类似.我们无法改变平板电脑的布局设计,因为它有很大的使用面积.我们必须拉伸所有图像以匹配手机.我们可以使用九个补丁.但我对在多个drawable中使用图像有点困惑.

根据我的分析(可能是错误的...... :))屏幕分为密度和大小.我们可以使用3:4:6:8的缩放比例.但这个比例是基于密度的.但在我的情况下,我必须拉伸整个用户界面来填充平板电脑屏幕.

那么什么是可以用于这样的应用程序的drawables,它可以支持多个设备.我们必须设计哪些屏幕尺寸.

这个应用程序需要近100个布局.所以我打算保持单一布局,并使用每个布局的重量来设计布局,而不是使用尺寸.

此外,如果我使用多个APK来支持不同的屏幕大小,那么用于支持的绘图是什么.小和正常2.大3. Xlarge

zna*_*nat 16

我刚做了一件非常相似的事情.要在不创建新布局的情况下拉伸应用程序,我使用了在XML中设置的维度

res/values/dimensions.xml
res/values-sw600dp/dimensions.xml -> 7+ inches
res/values-sw720dp/dimensions.xml -> 10+ inches
Run Code Online (Sandbox Code Playgroud)

维度是资源文件:

<dimen name="default_padding">11dp</dimen>
Run Code Online (Sandbox Code Playgroud)

您可以在600和720文件中将尺寸增加约30%.然后只需@dimen/default_padding在您的布局中使用它,它将被缩放

关于图像,无论是你要确保你把所有的资产在所有密度,或者你设置固定的大小,以你ImageView的和适当的scaleType


and*_*v84 5

首先,您不希望创建多个APK来支持多个屏幕密度.Android提供了在一个构建中支持所有内容所需的所有框架,您只需要创建具有所需密度的正确资源层次结构drawable.

那么你究竟需要什么...基于你的问题,以下内容:

  • 纵向模式:您可以使用以下命令在AndroidManifest文件中声明的每个Activity中指定此项:

    <activity android:name=".MainActivity" 
        android:label="@string/app_name"
        android:configChanges="orientation" > 
        ...
    </activity>
    
    Run Code Online (Sandbox Code Playgroud)

    注意:根据Android文档,如果您的目标API> = 13,并且您使用该android:configChanges属性,则还应使用该android:screenSize属性来帮助指定大小更改.

  • 各种屏幕的尺寸大小:如所涉及的,这也可以在资源中处理.这是使用一个通用布局文件但配置布局以在众多设备上使用的最佳方式.如果您不熟悉,请参阅http://developer.android.com/guide/topics/resources/more-resources.html#Dimension了解如何使用尺寸

  • drawables:听起来这是你问题的症结所在.正如您所提到的,使用九个补丁将帮助您减少应用占用空间并填补额外空间(有关九个补丁的更多信息,请参阅此处此处).你应该支持的尺寸和这些尺寸所需的密度在Android设计文档中有详细的讨论,如此详细,我甚至无法在这里正确地重复它.我已经提供了下面的链接到我记得的很多地方,这是讨论的.

祝好运!

以下是您会发现有用的Android设计文档的链接(其中一些已被提及):