【Android】drawable—hdpi、drawable—mdpi、drawable—ldp
来源:互联网 发布:淘宝加盟需要多少钱 编辑:程序博客网 时间:2024/05/16 12:02
“在Android平台上,应用的图片资源文件夹有三种选择drawable—hdpi、drawable—mdpi、drawable—ldp,平台会根据屏幕本身的尺寸与密度特性,自动载入对应的资源,并把它们从逻辑像素(DIP,用于定义界面布局)转换成屏幕上的物理像素。”
跑了一个小程序,只是用于显示一张高清图片,内存使用如下。
现在测试的机器分辨率为1280 * 672
测试的图片分辨率为1280 * 720
加载图片时,Android根据测试机器的分辨率首先加载drawable—mdpi 文件夹中的资源文件。
现在将图片分别放在不同的文件夹下,查看其内存使用率:
C:\Users\sz082093>adb shell procrank
PID Vss Rss Pss Uss cmdline
19061 23368K 23304K 8852K 7568K com.example.testmem ----------将图片放在了hdpi文件夹下,需要做图片拉伸
19150 25008K 21376K 7082K 5828K com.example.testmem ----------将图片放在了mdpi文件夹下
19201 31576K 27868K 13548K 12284K com.example.testmem ----------将图片放在了ldpi文件夹下,需要做图片压缩
太恐怖了,仅仅是因为文件放的地址不一样,内存使用竟然翻倍了~~~
由上述图片可见,在程序中,图片位置最好不好乱放,可能会导致:
(1) 内存资源的浪费
(2) 图片加载失败
(3) 内存溢出
使用命令行获取了设备的相关信息:
DisplayMetrics metric =
new
DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int
width = metric.widthPixels;
// 屏幕宽度(像素)
int
height = metric.heightPixels;
// 屏幕高度(像素)
float
density = metric.density;
// 屏幕密度(0.75 / 1.0 / 1.5)
int
densityDpi = metric.densityDpi;
// 屏幕密度DPI(120 / 160 / 240)
double
diagonalPixels = Math.sqrt(Math.pow(width,
2
)+Math.pow(height,
2
)) ;
double
screenSize = diagonalPixels/(
160
*density) ;
Log.d(
"ddd"
,
"width * height: "
+width+
" * "
+height);
Log.d(
"ddd"
,
"density: "
+density);
Log.d(
"ddd"
,
"densityDpi: "
+densityDpi);
Log.d(
"ddd"
,
"screenSize: "
+screenSize);
结果为:
C:\Users\sz082093>adb logcat -s ddd
--------- beginning of /dev/log/system
--------- beginning of /dev/log/main
D/ddd ( 4210): width * height: 1280 * 672
D/ddd ( 4210): density: 1.0
D/ddd ( 4210): densityDpi: 160
D/ddd ( 4210): screenSize: 9.035485598461214
然后参照下面表格。
手机屏幕分类和像素密度的对应关系如表所示(参考:http://blog.csdn.net/moruite/article/details/6028547):
Low density (120), ldpiMedium density (160), mdpiHigh density (240), hdpiSmall screenQVGA (240x320) Normal screenWQVGA400 (240x400)WQVGA432 (240x432)HVGA (320x480)WVGA800 (480x800)WVGA854 (480x854)Large screen WVGA800* (480x800)WVGA854* (480x854)可见,该盒子的确是默认先取了drawable—mdpi中资源。
【遗留问题】对于机顶盒设备,screenSize是指所接外设的屏幕物理尺寸吗?
【总结】:需要根据设备的dpi,将资源放在对应的资源文件夹里
【参考文章】:1、http://lanyan-lan.iteye.com/blog/1533981
2、http://blog.csdn.net/moruite/article/details/6028547
3、http://fixedmail.blog.163.com/blog/static/18571837520122621428569/
4、http://www.cnblogs.com/zchajax/archive/2011/05/09/2041136.html
- 【Android】drawable—hdpi、drawable—mdpi、drawable—ldp
- drawable—hdpi、drawable—mdpi、drawable—ldp的区别
- drawable—hdpi、drawable—mdpi、drawable—ldpi
- drawable—hdpi、drawable—mdpi、drawable—ldpi
- drawable—hdpi、drawable—mdpi、drawable—ldpi
- drawable—hdpi、drawable—mdpi、drawable—ldpi详解
- drawable—hdpi、drawable—mdpi、drawable-ldpi区别《转》
- 关于android中drawable—hdpi、drawable—mdpi、drawable—ldpi
- Android——(资源文件)drawable- hdpi、drawable- mdpi、drawable-ldpi的区别
- android drawable 、drawable-ldpi、drawable-mdpi、drawable-hdpi、。。。
- drawable-mdpi、drawable-ldpi、drawable-hdpi区别
- drawable-mdpi、drawable-ldpi、drawable-hdpi区别
- drawable-hdpi,drawable-ldpi,drawable-mdpi区别?
- drawable(hdpi,ldpi,mdpi)
- drawable(hdpi,ldpi,mdpi)
- Drawable-(hdpi,mdpi,ldpi)
- Android中drawable(hdpi,ldpi,mdpi)
- Android Studio 新建drawable-hdpi、drawable-mdpi等
- 最新res目录讲解(drawable、layout、values等目录的分辨率和layout的横竖屏,以及values的多语言)
- android下面res目录使用
- [ZOJ 3318] Strange Country [搜索]
- 【计算机网络】HTTP协议讲解
- js小练习
- 【Android】drawable—hdpi、drawable—mdpi、drawable—ldp
- FIFO的verilog代码
- 最小的k个数
- 【转】使用WxPython进行Win32下Python编程
- This指针
- Linux下配置ip地址
- AngularJS第二篇
- PL/SQL 创建新用户、删除用户及用户权限的开通
- 2014年IT互联网行业薪酬待遇