Android入门三之目录结构2

“drawable”、“drawable-hdpi”、“drawable-ldpi”、“drawable-mdpi”、“drawable-xdpi”等,这么多drawable文件夹,开发过程中静态图片到底该放哪个文件夹下面呢?

回想到几年前刚学android时,碰到这些文件夹确实挺头痛的,那时貌似还没“drawable-xdpi”这个文件夹,把《Hello Android》这本书翻来翻去也没有找到相关的资料。

 

You should always provide bitmap resources that are properly scaled to each of the generalized density buckets: low, medium, high and extra-high density. This helps you achieve good graphical quality and performance on all screen densities.

 

其实谷歌已经考虑到了适配问题,并且已经给出了建议方案。

 

To generate these images, you should start with your raw resource in vector format and generate the images for each density using the following size scale:

xhdpi: 2.0

hdpi: 1.5

mdpi: 1.0 (baseline)

ldpi: 0.75

This means that if you generate a 200x200 image for xhdpi devices, you should generate the same resource in 150x150 for hdpi, 100x100 for mdpi, and 75x75 for ldpi devices.

 

上面是官网中几个文件夹对应的标屏下密度比例关系。mdpi的标屏下密度是160dpi,也就是说在mdpi(320*480)的标屏下1px=1dp。

因此dp转化成px的计算公式是:px=dp*(density/160)。

 

Then, place the files in the appropriate drawable resource directory:

MyProject/

    res/

        drawable-xhdpi/

            awesomeimage.png

        drawable-hdpi/

            awesomeimage.png

        drawable-mdpi/

            awesomeimage.png

        drawable-ldpi/

            awesomeimage.png

Any time you reference @drawable/awesomeimage, the system selects the appropriate bitmap based on the screen's density.

同一个资源文件在每个文件夹放入对应尺寸的图片,要保持图片资源名称一样。可能会有人提出疑问,这样不是得让UED出N套资源,这是在逼疯的节奏~~。当然谷歌也不是没有想到:

Note: Low-density (ldpi) resources aren’t always necessary. When you provide hdpi assets, the system scales them down by one half to properly fit ldpi screens.

通常我们开发时都是以一特定的标准屏为基准,让UED同学出视觉图。一般开发是以hdpi也就是480*800为基准,在不同于它的屏幕下,系统会自动去进行缩放,这也就是android开发中的静态资源的缩放,也依赖于布局文件的好赖。对于有些不管是在哪种屏幕下面都是用一样的图片,也就是不允许系统缩放,直接放在“drawable”文件夹下即可。

上面几种文件夹,如果每个文件夹下面都放同一个命名的图片,在不同dpi的手机上会去显示对应文件夹下面的图片,例如:480*800的手机上,就会去显示drawable-hdpi下的图片,320*480会显示drawable-mdpi下的图片。理论上720P的手机会显示drawable-xhdpi下的图片,但~~。一般有“但”字出现,总是不好的征兆。xhdpi是720P的手机显示,但它也和手机的密度相关,hdpi、mdpi、ldpi三个文件夹只要屏幕分辨率达到了,即可显示,但xhdpi不同,如果手机屏幕的密度太小,系统不会去取xhdpi下的图片。例如:我的手机是三星的note8.0,屏幕分辨率是满足720的,但屏幕是八寸的,显然密度是过于小的,运行的时候取的是hdpi下的图片;小米2,是720P的,屏幕大小是4.3寸的,运行的时候取的就是xhdpi下的图片。

对于在开发时放多套资源的情况,在xhdpi的时候,静态图片的不适配有可能是这个原因引起的。

前几天“淘宝阅读”手机客户端赠送一本《全中国最穷小伙发财日记》,看到这个标题我和大多数人一样,觉得这本书的名字太土鳖了。也没想看的打算。

最近每天吃饭之际,总习惯用手机看看电子书或者新闻。上一本书刚刚结束,就索性打开《全中国最穷小伙发财日记》。看了一段总觉得似曾相识,一段回忆就浮现在了出来。曾几何时,还在上大学,喜欢逛论坛,当时有一个连载小说,为了追着看花了很多时间,最终还是没看到结尾。还在暗骂作者太监了,没想到事隔几年这本书的完整版又辗转到了我手里。

书上的主人公从国企的经理落魄到工地当民工,三年的颓废,五年的崛起,最后有房有车有事业。还是挺励志的,不知道现在的我以及五年后的我,又是个什么样的对比呢?这个问题是个值得深思的问题~~

你可能感兴趣的:(android)