android - 在 Android 上支持多屏幕

标签 android android-layout android-imageview android-image

已阅读 doc这很长,但仍然不清楚。

假设我有一张图片,size = 120px * 80px,在默认的mdpi/160密度下,我还需要准备

ldpi = 90 * 60
hdpi = 180 * 120
xhdpi = 240 * 160

上面的计算对吗?假设我只有一个布局,那么我需要准备图片并将它们放在相应的可绘制文件夹下,对吗?

谢谢

最佳答案

您根据 formula from Google 计算出的图像尺寸是正确的:

pixels = dp * (density / 160)

了解各种 DPI 的目标密度将使我们能够计算最终图像尺寸:

ldpi = 120 DPI
mdpi = 160 DPI
hdpi = 240 DPI
xhdpi = 320 DPI

下面是正确的宽度计算,从 120 像素宽的中等密度资源开始:

ldpi  (120 DPI) = 120 * (120 / 160) == 90
mdpi  (160 DPI) = 120 * (160 / 160) == 120
hdpi  (240 DPI) = 120 * (240 / 160) == 180
xhdpi (320 DPI) = 120 * (320 / 160) == 240

下面是正确的高度计算,从 80 像素高的中等密度 Assets 开始:

ldpi  (120 DPI) = 80 * (120 / 160) == 60
mdpi  (160 DPI) = 80 * (160 / 160) == 80
hdpi  (240 DPI) = 80 * (240 / 160) == 120
xhdpi (320 DPI) = 80 * (320 / 160) == 160

制作最终图像:

ldpi = 90 x 60
mdpi = 120 x 80
hdpi = 180 x 120
xhdpi = 240 x 160

res/ 下创建以下文件夹(如果它们尚不存在)并将正确的 Assets 放入:

  • drawable-ldpi
  • drawable-mdpi
  • drawable-hdpi
  • drawable-xhdpi

关于android - 在 Android 上支持多屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12004197/

相关文章:

android - 在 android 中使用什么布局来生成数据输入表单

android - ImageView 中的动画位图(模拟报亭应用程序 - Ken Burns Effect)

java - AOSP 5.1 - 如何使用实根权限执行我的应用程序?

Android Studio 中显示的 Android 设备列表卡住了

android - 图像在另一台设备上模糊

android - 将 match_parent 转换为 "0dp"

Android - 如何循环缩放/放大图像的一部分?

android - 抗锯齿 ImageView

java - 无法转换为 android.app.DatePickerDialog$OnDateSetListener

java - Utils 类中的自定义 Toast