Android中的图片(drawable目录;drawable和mipmap的区别)

原创文章:转载请标明转载地址。

不管是在Eclipse还是在Android studio,存放图片的都有drawable目录,当然Android studio还有mipmap目录,首先介绍drawable的区别,然后在介绍drawable和mipmap的区别


drawable文件夹

我们使用Eclipse创建新项目时,它会帮助我们自动生成六个文件夹(密度不同):

  • drawable-ldpi (low:120dip)
  • drawable
  • drawable-mdpi (medium:160dip)
  • drawable-hdpi (high :240dip)
  • drawable-xhdpi (xhigh :320dip)
  • drawable-xxhdpi (xxhigh:480dip)

一般的做法是,将图片等资源放在drawable-hdip中,将一些和XML文件相关的内容(图片选择器、文字颜色选择器、自定义形状等)放在drawable中。

Google推荐:像素使用dip,文字使用sp。

在mdip文件夹,1dip=1px。

关于dp,dip,sp,pt,px的区别,可参考:附录一。

关于图片在不同目录下的显示举例,可参考:附录二。

drawable和mipmap的区别

在Android studio中,同时存在drawable目录和mipmap目录,二者没有明显区别,但是工作机制还是存在差别。

谷歌官方:
drawable/
For bitmap files (PNG, JPEG, or GIF), 9-Patch image files, and XML files that describe Drawable shapes or Drawable objects that contain multiple states (normal, pressed, or focused). See the Drawable resource type.
mipmap/
For app launcher icons. The Android system retains the resources in this folder (and density-specific folders such as mipmap-xxxhdpi) regardless of the screen resolution of the device where your app is installed. This behavior allows launcher apps to pick the best resolution icon for your app to display on the home screen. For more information about using the mipmap folders, see Managing Launcher Icons as mipmap Resources.

谷歌官方没有推荐图片放在mipmap中!!!

谷歌官方没有推荐图片放在mipmap中!!!

谷歌官方没有推荐图片放在mipmap中!!!

官方解释:
mipmap——用于存放原生图片(图ic_launcher.png),缩放上有性能优化;
drawable——存放图片、xml,和Eclipse没有区别;


附录一

dip : device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。

dp : 和dip相同。

px : pixels(像素),一个像素通常被视为图像的最小的完整采样,不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。

pt : point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用。

sp : scaled pixels(放大像素). 主要用于字体显示best for textsize。

in(英寸):长度单位。

分辨率 :分为显示分辨率(屏幕分辨率)图像分辨率

显示分辨率:屏幕图像的精密度,是指显示器所能显示的像素有多少。显示器可 显示的像素越多,画面就越精细。显示分辨率一定的情况下,显示屏越小图像越清晰,反之,显示屏大小固定时,显示分辨率越高图像越清晰。

图象分辨率 :单位英寸中所包含的像素点数。

换算公式

public static float applyDimension(int unit, float value,
   DisplayMetrics metrics){
  switch (unit) {
     case COMPLEX_UNIT_PX:
         return value;
     case COMPLEX_UNIT_DIP:
         return value * metrics.density;
     case COMPLEX_UNIT_SP:
         return value * metrics.scaledDensity;
     case COMPLEX_UNIT_PT:
         return value * metrics.xdpi * (1.0f/72);
     case COMPLEX_UNIT_IN:
         return value * metrics.xdpi;
     case COMPLEX_UNIT_MM:
         return value * metrics.xdpi * (1.0f/25.4f);
     }
   return 0;
}

附录二

mdpi与hdpi是2:3的关系
mdpi与xhdpi是1:2的关系
ldpi 与mdpi是3:4的关系

dp与px换算公式:

pixs =dips * (densityDpi/160).

dips=(pixs*160)/densityDpi

现在假设,在一个项目中,你将一张60px*60px的图片放到mdpi中,它的大小是60*60;

若把它拿到hdpi中,那么它的大小应该是40*40,图片缩小。

参考博客:http://blog.csdn.net/jiangwei0910410003/article/details/40509571

你可能感兴趣的:(android)