【问题标题】:minimum pixels of the largest image's side to fit android xxhdpi screen最大图像一侧的最小像素以适合 android xxhdpi 屏幕
【发布时间】:2019-01-13 14:12:53
【问题描述】:

我正在制作一个全屏显示图像的 android 应用程序。

我了解了一些关于 dpi 和 dp 的知识,但我没有发现我的图像的最大一侧必须有多少像素(在横向模式下也可以很好地适应)才能在不同的设备上显示良好。

如文档中所述,最常用的屏幕配置是正常的 hdpi、xhdpi 和 xxhdpi 密度:

所以,如果我的想法是正确的,我可以只制作一张适合 xxhdpi 的图像,使其与其他两种密度也能正常工作,并将其放在 Android Studio 中的“res/drawable”文件夹下(不带限定符)。 在布局中以 dp 指定图像大小,Android 应该为较小的配置缩放图像。

但是,对于xxhdpi,我的图像的最大边必须有多少像素(以像素为单位)才能显示良好

编辑:我的图像的最长边必须有多少像素才能在具有xxhdpi密度的设备中正确显示图像没有颗粒感

所有图片都是照片,不是图标,所以我不能使用矢量图形。

【问题讨论】:

  • 我不完全清楚您在问题中的要求。你是想问What is the maximum number of height and width pixels supported by xxhdpi devices吗?还是有什么不同?
  • @Silmarilos,我需要知道:图像的最长边必须有多少像素才能在 xxhdpi 密度的设备中正确显示,而图像不会出现颗粒感? (我在我的问题帖子中编辑了这个问题)

标签: android pixel dpi android-screen-support


【解决方案1】:

通过查看Android Documentation。可以估计图片的大小。看下面的图片

所以,你的图像分辨率应该是相似的分辨率

LDPI:    200 X 320px
MDPI:    320 X 480px
HDPI:    480 X 800px
XHDPI:   720 X 1280px
XXHDPI:  960 X 1600px
XXXHDPI: 1440 x 2560px

一点点 +/- 不会影响结果,因为对于这些标准尺寸,应该尊重任何肖像图片的纵横比。

【讨论】:

  • 你能给我这些像素值的来源吗?正如这里提到的 material.io/resources/devices 所有 xxhdpi 都有 1000x1920px 或更高
  • @user2342558 我之前也遇到过同样的问题并自己解决了。我只是在某处选择了 mdpi 设备大小并相应地制作了其他设备。
  • 对于我的三星 Galaxy S5 neo,它是 xxhdpi,分辨率为 1920x1080,高边为 960 的图像看起来不错。那么,我必须将这些尺寸的图像放在哪个合格的原始文件夹中?在 raw-xxhdpi 中并通过缩放提供另一种选择?例如。在 xhdpi 中它将是 640px?是真的吗?
  • 将这些图片放入drawable文件夹src > main > res并创建多个文件夹,如drawable-mdpidrawable-hdpi等等......
  • 我做不到。我将它们移到原始文件夹中,因为现在图像已加密。
【解决方案2】:

好吧,如果您将适合xxxhdpi 的图像放入文件夹drawable 中,那么它将适合所有屏幕。

但是还有另一种方法可以只使用一张图片,而不是使用多张图片来实现不同的分辨率。这是通过使用svg 图像,这些图像是不受放大或缩小影响的矢量图像。

要使用svg,您需要遵循以下说明:

  1. 将图标设为icon.svg
  2. 在Android Studio中,右键drawable文件夹
  3. 选择New -> Vector Asset
  4. 选择Local File(SVG、PSD)
  5. 选择您的svg 文件
  6. 点击Next并选择名称
  7. 点击Finish
  8. 在应用程序build.gradle 中,在android 块内添加以下内容:

    vectorDrawables {
        useSupportLibrary true
    }
    
  9. 在xml布局文件中,添加以下内容:

    <AppCompatImageView
        android:width="wrap_content"
        android:height="wrap_content"
        app:srcCompat="@drawable/your_svg_file"
        />
    

【讨论】:

  • 感谢重播,但我不能使用矢量,因为我的图像是照片......我现在在我的问题中指定了这一点。
  • @user2342558 请参阅我更新的答案,第一行是解决方案。
  • 你没有回答我的问题“对于 xxhdpi,我的图像的最大边必须有多少像素,以像素为单位,才能显示好?”
【解决方案3】:

Android 为图像定义了比例,以便在所有不同的可绘制对象中设置

对于不同的屏幕像素密度,Android 图标需要五种不同的尺寸。较低分辨率的图标是从基线自动创建的。

  • mdpi: 160 dpi 1×
  • hdpi:240 dpi 1.5×
  • xhdpi: 320 dpi 2×
  • xxhdpi: 480 dpi 3×
  • xxxhdpi:640 dpi 4×

以上尺寸适用于普通像素图标。操作栏、对话框和选项卡图标、启动器图标和通知图标有固定的 android 大小

查看此链接了解更多详情http://iconhandbook.co.uk/reference/chart/android/

【讨论】:

  • 是的,但这就是我的回答,这取决于比例。对 xxxhdpi 有益的最大图像将是 4* 与您的基线图像大小
  • 你没有回答我的问题“对于 xxhdpi,我的图像的最大边必须有多少像素,以像素为单位,才能显示好?”
【解决方案4】:

你必须看看当前的智能手机市场。

您可以在此处查看市场上最流行设备的屏幕尺寸和分辨率。

http://screensiz.es/

按每英寸像素排序列表,您会看到顶级智能手机的分辨率大于 500 ppi 或其他方式查看它,远大于图像的 72ppi。

如果您有足够的空间来存储或下载图像的机制,请尝试以完整质量进行测试。如果那太多尝试找到妥协。降低图像质量并在高分辨率屏幕上查看结果。

请注意,您没有在此处发布图像的总尺寸,如果大于屏幕尺寸,请查看图像的总尺寸并将其压缩以满足您的需求,并尽可能保持分辨率。

编辑:仅以像素为单位查看图像大小,智能手机当前最大的屏幕为 2560 x 1440 像素,因此您不需要任何比这更大的图像。

【讨论】:

  • 您为什么使用ppi 单位?我需要了解pixel 属性...您对ppi 的解释对我没有帮助。
  • 图片有大小和分辨率。当您描述图像大小时,您可以参考其中任何一个。无论如何,如果您只对以像素为单位的图像大小感兴趣,只需在屏幕表中检查屏幕的大小(您有以像素为单位的大小)并将图像调整为最高分辨率的屏幕。 2960 x 1440 像素。如果占用太多空间,请通过减小图像大小并在智能手机中进行测试来找到一个很好的折衷方案。
  • 您好,您有图片大小(以像素为单位)的答案,您可以更新答案和分数吗?
  • devzeze,您提到了最高分辨率(2960 x 1440 像素),但我需要图像较大一侧的 XXHDPI 最大尺寸(以像素为单位)。
  • 因为 XXXHDPI 是最高的资源桶,所以没有以像素为单位的最大尺寸。这将始终取决于制造商。对于 XXXHDPI,dpi 大约为 640 dpi,但由于上面没有更多类别,例如具有 857 dpi 的 Sony Xperia H8541 在同一个存储桶上。
【解决方案5】:

如果我正确理解您的回答,您说的是图像(可爱的猫和狗的照片?),而不是是图标?

我更喜欢将图像放入 nodpi 文件夹。

nodpi 适用于所有密度的资源。这些与密度无关 资源。系统不会缩放带有此标记的资源 限定符,与当前屏幕的密度无关。

之后我会创建一个全屏 ImageView 并在需要时让 imageView 进行缩放

【讨论】:

  • 是的,是大位图,不是图标。因为它们是加密的,所以如果我把它们放在 nodpi 文件夹中是没有用的。我认为,如果我为他们提供不同的 dpi 版本来发布带有捆绑包的应用程序,那么用户必须根据他们的设备密度仅下载捆绑包。而且通过这样做,用户 cpu 将使用较小的图像尺寸减少工作量,从而产生更快的应用程序。如果我错了,请告诉我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-18
  • 2013-11-08
  • 2011-02-03
  • 1970-01-01
  • 2015-04-29
  • 1970-01-01
相关资源
最近更新 更多