Android drawable文件夹的使用

开学到现在一直都在学着去搞明白一个简单的游戏。写完代码之后,发现主界面显示的某些图片比正常的大了许多。
本来以为是代码写错了,反反复复,来来回回的检查代码,真心没有错误。。。崩溃了!!!
后来就尝试着把图片从drawable-mdpi中移动到了hdpi文件夹下,在运行程序的时候,竟然好了!!
MyGod,越是简单的东西就越容易出错。也只能怪自己学的不扎实不透彻了。在网上找到一些解释:
android为开发者提供了两种解决适配问题的办法,第一种方式是使用dip的单位(dip: device independent pixels(设备独立像素). 
不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素);
另一种是使用不同的drawable文件夹,如下图:


-hdpi    近似于240dpi的高级显示密度的屏幕
-mdpi    近似于160dpi的中级显示密度的屏幕
-ldpi    近似于120dpi的低级显示密度的屏幕
-xhdpi   近似于320dpi的超高級顯示密度的屏幕

图片缩放比列为 3 :4:6:8   ldpi,mdpi,hdip,xhdip
Android系統会手机屏幕的大小及屏幕尺寸去选择不同文件夹下的图片资源,以此来实现在不同大小屏幕分辨率下适配的问题。
比如在一个低分辨率的手机上,Android就会选择ldpi文件夹下的图片,但是如果没有在ldip的文件夹下找到相关的资源文件,
Android系统会首先从hdpi文件夹中选择文件,然后对图片资源进行缩放处理,显示在屏幕上;如果hdpi文件夹下也没有的话,
会在默认的drawable文件夹中寻找。因此图片放错文件夹的话,就会显示大小不同。如图正常显示的图片:


放大后的图片:

出现第二个图的原因是将hdpi下的图片放到了默认的文件夹下。
本身是同一张图片,由于系统没有在hdpi文件夹中找到对应图片,在默认的文件夹下找到了,但是这时系统会认为该图适用于中等分辨率的屏幕,
如果直接放到高分辨率的手机上不能适配,所以系统会自动的将图片放大,所以虽然是同一张图片,但是现实出来就是一个正常,一个被放大。
同理,如果同一张图片,放在ldpi的文件夹下,在低分辨率的手机上显示正常,但是如果放在hdpi文件夹中,系统认为该图是高分辨率显示的,
要将图片缩小处理,所以显示出来的效果就是图变小了。
所以才会出现明明是一张图片,只是放在不同的文件夹中,显示出来的效果就不同!

你可能感兴趣的:(android)