支持多屏幕尺寸-Android
我打算用Android开发新的应用程序。此应用程序只能在纵向模式下工作(即使是平板电脑)。此外,手机和平板电脑的UI和布局设计也应该类似。我们不能改变平板电脑的布局设计,因为它有巨大的使用面积。我们必须拉伸所有图像以匹配手机。我们可以用九块补丁。但我对在多个绘图表中使用图像有点困惑 根据我的分析(可能是错误的:),屏幕分为密度和大小。我们可以使用3:4:6:8的比例。但是这个比率是基于密度的。但在我的情况下,我必须拉伸整个UI以填充平板电脑屏幕 那么,对于这样一个可以支持多种设备的应用程序,可以使用哪些绘图功能呢。我们需要设计的屏幕尺寸是多少 这个应用程序需要近100个布局。因此,我计划维护单一布局,并使用每个布局的权重来设计布局,而不是使用尺寸 另外,如果我使用多个APK来支持不同的屏幕大小,那么Drawable用于支持什么 1.小而正常 2.大的支持多屏幕尺寸-Android,android,android-screen-support,android-screen,Android,Android Screen Support,Android Screen,我打算用Android开发新的应用程序。此应用程序只能在纵向模式下工作(即使是平板电脑)。此外,手机和平板电脑的UI和布局设计也应该类似。我们不能改变平板电脑的布局设计,因为它有巨大的使用面积。我们必须拉伸所有图像以匹配手机。我们可以用九块补丁。但我对在多个绘图表中使用图像有点困惑 根据我的分析(可能是错误的:),屏幕分为密度和大小。我们可以使用3:4:6:8的比例。但是这个比率是基于密度的。但在我的情况下,我必须拉伸整个UI以填充平板电脑屏幕 那么,对于这样一个可以支持多种设备的应用程序,可以
3.Xlarge除了像素密度特定的文件夹外,还可以指定屏幕大小特定的文件夹
drawable/
drawable-large/
drawable-xlarge/
drawable-hdpi/
drawable-large-hdpi/
drawable-xlarge-hdpi/
drawable-xhdpi/
drawable-large-xhdpi/
drawable-xlarge-xhdpi/
因此,您可以为各种屏幕大小和密度设计适当比例的图形。请注意,给定的屏幕大小类别(例如“大”)只能让您大致了解设备的实际设备像素尺寸,但您会得到关于最小/最大dp范围的良好指导
例如,您可能想要在手机上显示一个100x100的图像(屏幕大小为“正常”),您可以分别为可绘制、可绘制hdpi和可绘制xhdpi文件夹创建100x100、150x150、200x200的图像资源。但是,在7英寸平板电脑,即“大”屏幕大小的设备上,您可能会以200x200显示相同的图像,因此您的“可绘制大”文件夹资产将为200x200、300x300、400x400,而在10英寸平板电脑,即“xlarge”屏幕上,您可能会以300x300、450x450、600x600显示相同的图像,因此这些文件将放在“可绘制xlarge-*”文件夹中
详情如下:
我只是做了一些非常类似的事情。为了在不创建新布局的情况下扩展应用程序,我使用了XML中设置的维度
res/values/dimensions.xml
res/values-sw600dp/dimensions.xml -> 7+ inches
res/values-sw720dp/dimensions.xml -> 10+ inches
维度是资源文件:
<dimen name="default_padding">11dp</dimen>
11dp
在600和720文件中,可以将尺寸增加约30%。
然后在布局中简单地使用@dimen/default\u padding
,它将被缩放
关于图像,您要么确保所有资源都具有所有密度,要么为您的
ImageView
设置固定大小,并设置适当的scaleType
,首先需要所有可能的屏幕布局
drawable
drawable-ldpi
drawable-mdpi
drawable-hdpi
drawable-xhdpi
drawable-xxhdpi // phones like s4
drawable-xlarge
drawable-tvdpi // nexus 7 etc
drawable-xlarge-xhdpi //tablet like nexus 10
layout : for phone
layout-sw600dp
layout-sw720dp
然后,你需要把所有使用9补丁的按钮等图像。。。你也可以使你的自定义绘图,这将是容易和方便的工作。此外,你可以采取dpi为每个屏幕使用开关和规模它相应的布局
在我的一个项目中,我使用这种技术向每个分辨率设备显示各自的内容
DisplayMetrics metrics = getResources().getDisplayMetrics();
int densityDpi = (int) metrics.density ;
switch (densityDpi) {
case (int) 1.5:
break;
case (int) 2: //1.75 will be 2 in INT.
break;
default:
break;
}
同时保留所有将用于边距填充的值,如tvdpi平板电脑的值为sw600dp,平板电脑的值为sw720dp
最后但并非最不重要的一点是,尽可能多地保持所有东西的通用性,并将其置于可绘制状态。。
我见过一些ppl使用不同dpi的背景图案,并将其放在各自的可绘制中。。如果有这样的东西,如模式,使您的自定义绘图,并重复相应的
那会节省你的时间。。希望它可以帮助您首先,您不想创建多个APK来支持多个屏幕密度。Android提供了支持一个构建中的所有内容所需的所有框架,您只需使用所需的密度创建正确的资源层次结构绘图 那么你到底需要什么。。。根据您的问题,请注意以下几点:
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="orientation" >
...
</activity>
- 纵向模式:您可以使用以下命令在AndroidManifest文件中声明的每个活动中指定此模式:
<activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="orientation" > ... </activity>
,如果您的目标API>=13,并且您使用了
属性,那么您还应该使用android:configChanges
属性来帮助指定大小更改android:screenSize
- 各种屏幕的维度大小:如前所述,这也可以在参考资料中处理。这是使用一个通用布局文件的最佳方法,但可以配置布局以在多个设备上使用。如果不熟悉尺寸标注,请参见了解如何使用尺寸标注
- 可拖拉物品:听起来这是你问题的关键。正如您所提到的,使用九个补丁将帮助您减少应用程序占用空间并填充额外空间(有关九个补丁的更多信息,请参阅和)。您应该支持的尺寸以及这些尺寸所需的密度在Android设计文档中进行了非常详细的讨论,太多细节了,我甚至无法在这里重新整理。我已经在下面提供了链接,指向我记得讨论过的尽可能多的地方