朱辉守信原文及翻译:Android2.2中drawable(hdpi,ldpi,mdpi)、android :gravity区别

来源:百度文库 编辑:中财网 时间:2024/04/30 03:34:35

一.drawable(hdpi,ldpi,mdpi)有什么区别?

 

答:主要是为了支持多分辨率的.

hdpi里面主要放高分辨率的图片,如WVGA (480x800),FWVGA (480x854)

mdpi里面主要放中等分辨率的图片,如HVGA (320x480)

ldpi里面主要放低分辨率的图片,如QVGA (240x320)

系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片

所以在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片

 

dpi是“dot per inch”的缩写,每英寸像素数。

四种密度分类: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high)

一般情况下的普通屏幕:ldpi是120,mdpi是160,hdpi是240,xhdpi是320。

 

【附】.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

 

drawable-(hdpi,mdpi,ldpi)和WVGA,HVGA,QVGA的联系

hdpi里面主要放高分辨率的图片,如WVGA (480×800),FWVGA (480×854)

mdpi里面主要放中等分辨率的图片,如HVGA (320×480)

ldpi里面主要放低分辨率的图片,如QVGA (240×320)

系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片

 

二、到底放哪个drawable文件夹里面?

 

有人肯定会对于android中放置图片的地方drawable—hdpi、drawable—mdpi、drawable—ldpi这三个感到好奇。肯定心里会想,放在哪一个都行,只要是在android中的res目录下的drawable中就行,系统会自己找到。有心的朋友肯定会他把弄个究竟。我以前对drawable—hdpi、drawable—mdpi、drawable—ldpi这三个也了解了一下,但是只是字面上的,没有真正理解透彻,到今天我才算有稍深点的理解。drawable—hdpi看他的单词名肯定知道他是放置高分辨率的图片,drawable—mdpi放置中等分辨率的图片,drawable—ldpi放置低分辨率的图片。大部分人都把的图片放在drawable—mdpi中。起初我认为随便将图片放置在三个当中的任意一个都行,但是今天我知道了。在分辨率低于480*800时把图片放在drawable—mdpi中是不会有什么影响,但是当分辨率为420*800或高于它时就会出问题了。你的手机屏幕有那么大但是他会将图片拉伸,当加载图片后让你感觉该屏幕没有实际的大小,而如果将图片放到drawable—hdpi中则该问题就不会存在了。比如手机屏幕的大小为420*800如果你将图片放在drawable—mdpi中,那么你就要准备一张340*525分辨率的图片

 

 

三、android :gravity  android:layout_gravity 区别

 

在写android xml时候,一个属性可以有android :gravity  android:layout_gravity.

 

我就纳闷,这两个有什么区别呢? 肯定有区别,到底什么区别.

 

自己测试了,总结了下,希望对你有帮助.

 

android:gravity 属性是对该view 内容的限定.比如一个button 上面的text.  你可以设置该text 在view的靠左,靠右等位置.该属性就干了这个.

 

android:layout_gravity是用来设置该view相对与起父view 的位置.比如一个button 在linearlayout里,你想把该button放在靠左  靠右等位置就可以通过该属性设置.

 

 

四、drawable是否支持多级目录

 

res目录下不支持多级目录

 

你看一下android文档里面对图片资源的folder分级分类的介绍吧  

 

建议你用文件夹不同后缀组合的方式来分

 

http://developer.android.com/guide/topics/resources/providing-resources.html

 

包括MCC port/land language等方式来分类

 

你在里面再建子文件夹 系统也不会正确识别

 

你可以看一下AAPT里面的Image.cpp 我记得里面有对文件夹名解析的逻辑

 

应该是可以分的 ,但不是二级目录这么分,我只是测试了下,比如你想在drawable-mdpi文件下建个二级目录来存放相应的图片,你可以建立一个drawable-mdpi-finger目录代替,这个目录和drawable-mdpi同一级别,这样当用R.drawable.id的时候就可以找到在drawable-mdpi-finger下面的图片,但是用其他的名字则不行,如用drawable-mdpi-home,可能android有相应的命名机制吧,具体你可以看下contacts这个目录下,他的图片不单单存放到drawable-mdpi这下面,它把一些图片放在了drawable-mdpi-finger下面,具体还可以怎么命名还是要我们去发现,希望对你有用。