谷歌让用dp而不是px作单位来显示图标,那设计图标时要提交的还是.png的文件吗?还是什么别的格式呢?还是要分为ldpi、mdpi、hdpi和xhdpi吗? 还是只用提交一个文件就可以了?,,,搞不明白,求指导dp设计

解决方案 »

  1.   

    单位是dp还是px,跟图片是没有关系的,图片还是用png的,最好是按dpi的不同准备不同的图片,这样可以获得最好的显示效果,而且在没有缩放的情况下,显示出来的图片尺寸跟你放到文件夹的图片尺寸是一样的。如果为了省空间,尽量用分辨率高一点的图片,这样缩小显示不会失真。
    ldpi=120dpi,mdpi=160dpi,hdpi=240dpi,xhdpi=320dpi.
    图片在其他dpi下显示的尺寸的计算公式是:目标dpi/原始dpi×原始尺寸
    假设你只有一张图片,放在xhdpi目录下,图片尺寸是100×200:
    在ldpi下的被缩小成:120/320=0.375倍,也即38×75
    在mdpi下的被缩小成:160/320=0.5倍,也即50×100
    在hdpi下的被缩小成:240/320=0.75倍,也即75×150
    假设你只有一张图片,放在ldpi目录下,图片尺寸是100×200:
    在mdpi下的被放大成:160/120=1.33倍,也即133×267
    在hdpi下的被放大成:240/120=2倍,也即200×400
    在xhdpi下的被放大成:320/120=2.67倍,也即267×533
      

  2.   

    不好意思,还是没有太明白,那跟跟以前用px做单位对于设计人员提供图标的样式有什么区别呢? 还是说换了通用dp后改变的是代码,对于设计人员提供的图标没改变,还是36 x 36 px 48 x 48 px 72 x 72 px? 麻烦了
      

  3.   

    不好意思,还是没有太明白,那跟跟以前用px做单位对于设计人员提供图标的样式有什么区别呢? 还是说换了通用dp后改变的是代码,对于设计人员提供的图标没改变,还是36 x 36 px 48 x 48 px 72 x 72 px? 麻烦了
      

  4.   

    楼主,“谷歌让用dp而不是px作单位来显示图标”这句话想表达的是在xml中配置的图片显示的高度和宽度,例如:
    android:layout_width="100dp"
    android:layout_height="100dp"
    或者px,意思是这个控件里显示图片的宽度和高度是dp,然后把1dp换算成px,例如,对于hdpi的屏幕,1dp一般等于1.5px,对于xhdpi,1dp=2px(屏幕像素密度为2)。
    图标设计的时候是以.png或者9.png格式存放在drawable、drawable-mdpi、drawable-hdpi等目录下,目的是为了适应不同屏幕尺寸,例如,同一款应用安装在mdpi、hdpi、xhdpi分辨率不同的屏幕手机上,它会分别读取到mdpi、hdpi、xhdpi目录下的图标资源,这样做就可以囊括更多的手机,当然如果你只将图片放在hdpi目录下,那么所有分辨率的手机都有可能都只使用hdpi目录下的图片,这样会造成显示效果上有差异,要么感觉放大了要么感觉缩小了.
    因此三方应用一般都会考虑在drawable、drawable-mdpi、drawable-hdpi、drawable-xhdpi等目录下放不同像素大小的同一张图标资源(.png或.9.png),以适应市面上的不同分辨率的手机。
    不知道这样说楼主明白没有?
      

  5.   

    dp也好,px也好,是在代码里用的,跟你真实的图片尺寸没关系。用dp做单位可以提高应用对不同dpi设备的兼容性,减小工作量。
    换了通用dp后改变的是代码,对于设计人员提供的图标没改变,还是36 x 36 px 48 x 48 px 72 x 72 px?差不多是这个意思。我说的那一段,意思是如果你有一张图,只是放在某一个dpi的目录下,那么在其他dpi的设备上,图片会被自动缩放,显示出来的图片尺寸跟原始的不一样。如果你各个dpi目录下都有这张图,那么在不同dpi的设备上,显示出来图片的大小跟你原始图片都是一样的,不会再去缩放。
    在不同dpi的设备上,1dp对应的px都是不一样的,计算公式是:dips=(pixs*160)/densityDpi
      

  6.   

    还有,楼主所说的:36 x 36 px 48 x 48 px 72 x 72 px 三种分辨率的图标资源是放在不同dpi的手机上的,例如分别放在mdpi、hdpi、xhdpi,因为xhdpi相对于mdpi来说,同样大小的屏幕尺寸(注意是屏幕尺寸)需要更大的像素图片才能显示一样大小,否则例如 36 X 36 px 的这张图片放在mdpi屏幕上显示可能比较正常,但放到xhdpi屏幕上显示的就非常小,就是这个原因。