【问题标题】:Does `wrap_content` works the same way as Density Pixels?`wrap_content` 的工作方式与密度像素相同吗?
【发布时间】:2016-05-11 07:08:29
【问题描述】:

我已阅读有关不同屏幕尺寸的 Android 指南,但仍有一些注意事项。

客户给了我一张来自PSD 文件的图像,该图像具有适合的分辨率 1080 X 1920。我只是使用wrap_content,它非常适合这个部分 屏幕。

我没有使用DP 来定义它的width-height,如果我使用DP 它会 根据screen sizes调整图像。

我的问题是,

  1. wrap_content 的工作方式与密度像素相同吗?
  2. 是否也有响应,并根据width-height更改图片 到不同的屏幕?
  3. 如果不是,那么是否需要使用DP来支持不同的屏幕 尺寸?

谢谢

【问题讨论】:

    标签: android android-layout android-linearlayout pixel-density


    【解决方案1】:

    设置wrap_content 告诉您的视图将自身调整到其内容所需的尺寸。在您的测试中,您的图像为 1080x1920,您设备的屏幕分辨率也可能为 1080x1920,因此非常适合。由于您将宽度和高度设置为wrap_content,Android 只是尝试使用尽可能多的屏幕空间来正确显示提供的内容量。在这种情况下,由于可用的屏幕空间与内容的大小相匹配,因此非常适合。

    但是如果设备屏幕不是 1080x1920 怎么办?在这种情况下,Android 将仅使用尽可能多的空间,但仍会尝试将图像放入可用屏幕空间的范围内。换句话说,系统将适当地缩小图像以将其放入您为其提供的容器中。但是,如果纵横比与图像不同,这可能会导致尴尬的配合。例如,请看下面的截图:

    这张图片是 1920x1080,但请注意它不太合适。那是因为在横向查看时,这个 nexus 7 屏幕是 1824x1200。此外,屏幕顶部的工具栏占用了可用的屏幕空间,使我的可视区域变得更小,形状也更笨拙。因此,虽然系统会喜欢这个图像一直延伸到左右边界,但它不能,因为那意味着高度将大于可视空间。由于我使用wrap_content 显示此图像,因此系统使用了尽可能多的垂直空间,结果是图像与水平空间不太吻合。

    因此,为了更直接地解决您的问题,是的,wrap_content 是一种相对尺寸设置,可以更轻松地在多种屏幕尺寸上获得一致的外观,类似于使用 dp。但要意识到市场上有数百甚至数千种可用的 Android 设备,它们都有不同的屏幕尺寸和密度。因此,您的可绘制对象可能并不总是以您希望的方式出现在每台设备上。

    解决这个问题的方法是提供多个版本的资源,并为不同的屏幕尺寸和密度提供备用布局文件。一旦你这样做了,你所能做的就是测试,测试,再测试一些。将模拟器用于奇怪的屏幕密度或您不拥有的设备,以确保您获得所需的外观。对于您的 1920x1080 图像,它在该设备上看起来很棒,但它如何适合比图像分辨率更小的大型平板电脑或小型手机呢?这些是您在设计中必须考虑的情况。

    我建议您阅读这些资源,因为它们对于学习如何处理因屏幕尺寸和密度不同而导致的问题非常有帮助:

    http://developer.android.com/guide/practices/screens_support.html http://developer.android.com/training/multiscreen/screensizes.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-21
      • 2011-10-09
      • 2020-09-29
      • 2011-01-29
      • 2011-04-04
      • 1970-01-01
      • 2013-12-07
      相关资源
      最近更新 更多