安卓图片适配相关

来源:互联网 发布:java如何防止内存泄露 编辑:程序博客网 时间:2024/05/29 04:29

相关长度单位

px、dp、dip、dpi、sp

1、px:屏幕实际像素,480*720(屏幕分辨率)表示屏幕横向有480个像素点,纵向有720个像素点。
2、dp:也叫dip((density independent pixel),密度无关像素,在不同分辨率设备上显示不同。1dp在mdpi设备上等于1px,在hdpi等于1.5px,xhdpi设备上等于2px,xxhdpi等于3px。
3、dpi:(dot per inch)屏幕每英寸上的像素点,即为屏幕密度,越高屏显越细腻。
4、sp:类似dp,安卓中主要用于字体单位,字体大小会随屏幕不同而显示不同。

获取设备屏幕信息方法

DisplayMetrics displayMetrics = getResources().getDisplayMetrics();    float density = displayMetrics.density; //屏幕密度    int densityDpi = displayMetrics.densityDpi;//屏幕密度dpi    int heightPixels = displayMetrics.heightPixels;//屏幕高度的像素    int widthPixels = displayMetrics.widthPixels;//屏幕宽度的像素    float scaledDensity = displayMetrics.scaledDensity;//字体的放大系数    float xdpi = displayMetrics.xdpi;//宽度方向上的dpi    float ydpi = displayMetrics.ydpi;//高度方向上的dpi

实际开发切图

实际开发中由于图片占用空间不小,所以除了少部分图片以外,大多数图片只使用一套,以减少APK大小,一般放在drawable-xxhdpi包下,由于同一张图片放在不同目录下在内存中生成的bitmap大小不同,影响此数值有两个因素:inTargetDensity(取决于设备屏幕密度)、inDensity(原始密度,取决于放置图片的目录),放大倍数等于inTargetDensity/inDensity,所以同样的图片放在不同目录下耗费内存相差很大。总之一句话,放在该目录下省内存。

原创粉丝点击