我已经开始使用Adobe Photoshop为我的Android应用程序制作图形。但是我无法继续,因为Photoshop中的分辨率是以每英寸像素为单位设置的,正如Google官方文档所述,Android要求以dpi设置图像。我已经在网上搜索了两者之间的转换,但从未以任何合适的公式告终。

我知道Android文档将这种关系描述为px = dp*dpi/160。但是我的问题是,如果我知道dpi,那么在哪里可以得到要在此计算中使用的dp值?还是有关于dp值的任何假设?我很困惑。

最佳答案

Dp是与密度无关的像素,用于概括屏幕的像素数。这些是取自http://developer.android.com/guide/practices/screens_support.html的广义数字

  • xlarge屏幕至少为960dp x 720dp
  • 大屏幕至少为640dp x 480dp
  • 正常屏幕至少为470dp x 320dp
  • 小屏幕至少为426dp x 320dp

  • 屏幕的通用Dpi值:
  • ldpi用于低密度(ldpi)屏幕(〜120dpi)的资源
  • mdpi中密度(mdpi)屏幕(〜160dpi)的资源。 (这是基线密度。)
  • hdpi用于高密度(hdpi)屏幕(〜240dpi)的资源。
  • xhdpi用于超高密度(xhdpi)屏幕(〜320dpi)的资源。

  • 因此,您的资源的总体大小(假设它们是全屏的):
  • ldpi
  • 垂直= 426 * 120/160 = 319.5px
  • 水平= 320 * 120/160 = 240px
  • mdpi
  • 垂直= 470 * 160/160 = 470px
  • 水平= 320 * 160/160 = 320px
  • hdpi
  • 垂直= 640 * 240/160 = 960px
  • 水平= 480 * 240/160 = 720px


  • 编辑-添加xhdpi,因为它们变得越来越流行
  • xhdpi
  • 垂直= 960 * 320/160 = 1920px
  • 水平= 720 * 320/160 = 1440px

  • 这些值应适用于大多数xhdpi屏幕,例如电视和Nexus 4,包括Nexus 10(假设它们没有为此创建新类别,因为它是25k x 16k,不知道,因为我还没有还没有动手)。

    /编辑

    如果使用这些尺寸,则图像在任何屏幕上都将看起来很棒。请务必在dp中的代码中定义大小,但是Android会自行处理上述转换。

    关于android - 如何将ppi转换为dpi用于Android图像?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6930031/

    10-09 00:45