android drawable-(hdpi,mdpi,ldpi)的区别
一下是搜索到的:
dpi是“dot per inch”的缩写,每英寸像素数。
四种密度分类: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high)
一般情况下的普通屏幕:ldpi是120,mdpi是160,hdpi是240,xhdpi是320。
2.WVGA,HVGA,QVGA的区别
VGA是”Video Graphics Array”,显示标准为640*480。
WVGA(Wide VGA)分辨率为480*800
HVGA(Half VGA)即VGA的一半分辨率为320*480
QVGA(Quarter VGA)即VGA非四分之一分辨率为240*320
3.drawable-(hdpi,mdpi,ldpi)和WVGA,HVGA,QVGA的联系
hdpi里面主要放高分辨率的图片,如WVGA (480×800),FWVGA (480×854)
mdpi里面主要放中等分辨率的图片,如HVGA (320×480)
ldpi里面主要放低分辨率的图片,如QVGA (240×320)
系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的
在android系统1.6版本后,开始支持自动缩放功能,使图片能适用自动适应不同分辨率的手机。
如果你的图片是放在hdpi的文件夹内,而你的手机分辨率是320*480的,那么你取出来的图片将会进行缩小,
比例为:240dpi/160dpi, 你的图片就比你实际看到的要小。
反之,如果你手机是480*800,而你的图片是放在mdpi文件夹下面,取出来的图片将按比例进行放大。
所以一般开发的时候都是准备了多套图,分别放在不同分辨率的文件夹下,以适用不同分辨率手机。
但往往开发滴时候 一般不会去准备那么多图片,我滴做法是开发适用相对高分辨率的480*800的测试机,然后图片
放在hdpi的文件夹下,在代码中会根据不同分辨率,将图片进行缩小处理,这样不会出现图片失真情况,至于更大分辨率的,那种即使放大,也不会用很明显的失真,很难看出来。这样做加快的开发,减少了美工负担。
网上 还有人有一种办法 ,就是指定版不支持自动缩放(版本在1.6或以前)。
关于android中,获得surfaceholder后通过锁定画布获得画布对象函数的一些疑问,
假如是320*480的手机
Rect rect = new Rect(100,100,200,200);
canvas = holder.lockCanvas(rect);// 获取canvas
System.out.println("left:" + rect.left + "right:" + rect.right + "top:" + rect.top + "bottom:" + rect.bottom);
此处的rect 是传进去再获得返回值,
第一次绘制时,没有缓存,绘制canvas整块区域(320*480),然后会有区域缓存
返回的rect为当前绘制的rect大小,即整个canvas大小(320*480),
第二次绘制时,因为有缓存, 实际绘制大小为rect指定大小。
此时返回的rect为实际绘制大小,即为最开始设置的值。
所有打印结果为:
0,320,0,480
100,200,100,200
100,200,100,200