dro*_*der 13 android android-layout android-screen-support
我已经完成了我的应用程序,现在需要处理适应多种屏幕尺寸.
在这一点上,似乎我唯一的选择是做以下事情:
有一个单独的xml布局:小尺寸,普通尺寸,大尺寸和X大屏幕尺寸.在其中有一个单独的xml布局:ldpi,mdpi,hdpi和xhdpi在纵向和横向之间有一个单独的xml布局.
对于一个活动,总共有32个布局.
我只是想知道是否有更好的方法来执行此操作,因为这将非常耗时,但是如果需要支持所有可能的设备,我不介意.
我做了一些阅读,人们说使用线性布局并使用重力,因为它是一个百分比,所以它在所有屏幕上看起来都一样.或者我可以使用RelativeLayout并使用"AlignAbove或Below"等.
然而,我的主要问题是尺寸错误,而元素的位置似乎通常在正确的位置.
有一种被广泛接受的方式吗?
我真的只是在寻找普通开发人员处理所有屏幕尺寸的"主流"方式.
Ari*_*Roy 15
好问题.但是,你所做的并不是" 专业 "开发人员的做法.单个Activity不需要32个布局,Android足够智能处理事情.
没有多层定义的layout.xml/dimens.xml多设备支持可能与否?
是的,这绝对是可能的,这就是你应该做的.为单个Activity布局定义32个布局并不是一件好事.
假设我在Play商店中有一个相当大的应用程序,有超过20个活动,现在如果我为一个Activity定义了32个布局,那么我的应用程序将有超过600个布局.这可行吗?试试问自己吧.
您需要首先给 这个页面一个非常好的阅读.它包含您需要知道的几乎所有内容.但我会帮助你把事情弄清楚.
您无需为屏幕尺寸和密度的每种组合提供替代资源.该系统提供强大的兼容性功能,可以处理在任何设备屏幕上呈现应用程序的大部分工作,前提是您已使用允许其正常调整大小的技术实现UI
这句话足以让你相信你不应该这样做.Android系统足够智能,可以相应地调整您的布局.相信我,它真的很好.
在为不同的屏幕尺寸设计UI时,您会发现每个设计都需要最少的空间.因此,上面的每个通用屏幕尺寸都具有由系统定义的相关最小分辨率.这些最小尺寸以"dp"为单位 - 与定义布局时应使用的单位相同
我将尝试指出您需要考虑的一些重要事项.
dp或sp在您的布局中.顾名思义,它们与不同设备的密度无关,因此在每个设备中看起来都是一样的.wrap_content或match_parent用于高度和宽度AbsoluteLayoutRelativeLayout或者LinearLayout两者都适合你,你只需根据场景决定你想要使用哪一个Android Studio Rich Layout Editor
Android Studio有一个惊人的布局编辑器,您可以立即预览您的布局.只需看下面的截图,
我正在同时预览各种屏幕尺寸的应用程序的特定屏幕,我的布局看起来就像我希望它看起来一样.
我只有两个布局用于此活动,一个用于所有手机,一个用于所有平板电脑.
实践经验
如果你想要一个实际的体验,我在Play商店运行一个应用程序,成千上万的用户在不同屏幕尺寸的8000多种不同设备上使用它.
我只有2个布局用于特定活动,一个用于手机,一个用于平板电脑.我的应用程序的用户界面在所有设备上看起来都不错,我从来没有对任何用户提出任何投诉.如果您需要,这里是应用程序的链接.
我相信这个详细的答案可以澄清你所有的疑虑,如果没有,请不要犹豫,让我知道.我很想进一步帮助.
UDPATE
我会再次尝试清除你的困惑.但首先我建议你多次阅读我的答案.
您需要一个或两个布局,这取决于您正在设计的特定布局.所有布局都不同.它在技术上不能被定义为主观的.它没有拇指规则.但我会尽力帮助你.
您需要充分利用Android Studio Rich Layout Editor及其出色的实时预览功能.
首先尝试设计针对任何平均设备尺寸的布局(如5英寸的Nexus 5).只需选择Nexus 5即可预览您的布局.
对设计满意后,选择其他屏幕尺寸进行预览.您也可以选择"预览所有尺寸",如上面的屏幕截图所示.
尝试查看您的布局在所有屏幕尺寸上是否都很好,从4英寸到10英寸的平板电脑不等.查看间距,图像大小,字体大小是否都正确.
从4英寸到6英寸的所有手机通常都会有完美的预览,但您可能需要为平板电脑屏幕单独设计另一种布局(因为它们足够大).只有这里需要2个布局,但并非总是如此.
就像我的应用程序一样,我有2个独立的布局,仅用于5-6个活动,但其余的我只有一个布局.这一切都取决于具体的布局.
设计与编程完全不同.编程可以正式和语法定义,但设计不可能.设计绝对是主观的,取决于设计师的观点.以自己的方式发挥创造力,这是设计的魔力.
然而,我的主要问题是尺寸错误,而元素的位置似乎通常位于正确的位置。
您正确使用 dp 和 sp 单位吗?
dp
与密度无关的像素 - 基于屏幕物理密度的抽象单位。这些单位相对于 160 dpi(每英寸点数)屏幕,其中 1dp 大致等于 1px。在较高密度的屏幕上运行时,用于绘制 1dp 的像素数会按适合屏幕 dpi 的系数进行放大。同样,当在较低密度的屏幕上时,用于 1dp 的像素数也会按比例缩小。dp与像素的比例会随着屏幕密度的变化而变化,但不一定成正比。使用 dp 单位(而不是 px 单位)是一种简单的解决方案,可以使布局中的视图尺寸根据不同的屏幕密度正确调整大小。换句话说,它为不同设备上的 UI 元素的实际大小提供了一致性。
sp
与比例无关的像素 - 这类似于 dp 单位,但它也会根据用户的字体大小首选项进行缩放。建议您在指定字体大小时使用此单位,以便根据屏幕密度和用户偏好进行调整。
来自Android 文档。
| 归档时间: |
|
| 查看次数: |
3314 次 |
| 最近记录: |