android是根据什么去选择三种drawable文件夹下的图片?
是根据drawable文件夹的修饰符进行选择的。
比如drawable、drawable-ldpi、drawable-mdpi、drawable-hdpi、drawable-xhdpi、drawalbe-xxhdpi、drawable-xxxhdpi
根据修饰符进行优先匹配。
不同的dpi修饰符对应的dpi如下
drawable-ldpi 120DPI
drawable-mdpi 160DPI
drawable-hdpi 240DPI
drawable-xhdpi 320DPI
drawalbe-xxhdpi 480DPI
drawable-xxxhdpi 640DPI
dpi是根据手机的当前分辨率ppi归一化得到的。
那么PPI如何得来的?
如果手机的宽为X,高为Y,屏幕大小为Z英寸,那么
公式中的X2其实是X的平方,即X*X。
比如三星手机I9260分辨率是1280*720,屏幕大小是4.65英寸,那么计算得到的PPI就是315.8PPI
找一个最近的DPI值应该是320DPI,也就是这个设备被归一化后就是320DPI。属于xhdpi。
系统取图片时会优先选择drawable-xhdpi里面的图片,如果drawable-xhdpi不存在或者没有这张图,就会就近从其它分辨率和默认的无后缀drawable文件夹下取。
比如工程只有在draw-xxhdpi文件下有img图片,而你的设置是xhdpi,就会从xxhdpi取完图片再压缩到对应大小返回给使用者。
呃,不好意思,我刚学,你说的p6200和p1000是什么东西啊?是硬件吗?
是两个三星的平板电脑 P6200是android SDK3.2 调用的是mdpi中的图片 P1000是android SDK2.2 调用的是hdpi中的图片
(1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854)
(2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480)
(3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320)
系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。
在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片。