`
Leif_冬
  • 浏览: 47462 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Android 适配(Drawable 文件夹)图片适配

 
阅读更多
写道
Android资源文件存放:

android的drawable文件一共可以有:

drawable-ldpi(低密度) drawable-mdpi(中等密度) drawable-hdpi(高密度) drawable-xhdpi(超高密度)

drawable-xxhdpi(超超高密度) drawable-xxxhdpi(超超超高密度) drawable-nohdpi(无缩放) 当然还加上默认的drawable



----------以下是重点理解内容,一定要看懂----------



比如在一个中等分辨率的手机上,Android就会选择drawable-mdpi文件夹下的图片,文件夹下有这张图就会优先被使用,在这种情况下,图片是不会被缩放的;

但是如果没有在drawable-mdpi的文件夹下找到相应图片的话,Android系统会首先从更高一级的drawable-hdpi文件夹中查找,如果找到图片资源就进行缩放处理,显示在屏幕上;

如果drawable-hdpi文件夹下也没有的话,就依次往drawable-xhdpi文件夹、drawable-xxhdpi文件夹、drawable-xxxhdpi文件夹、drawable-nodpi;

如果更高密度的文件夹里都没有找到,就往更低密度的文件夹里寻找,drawable-ldpi文件夹下查找;

如果都没找到,最终会在默认的drawable文件夹中寻找,如果默认的drawable文件夹中也没有那就会报错啦。(前提是把一张图片做成很多不同的分辨率放在各个对应密度的drawable文件夹下)

举个例子,假如当前设备的dpi是320,系统会优先去drawable-xhdpi目录查找,如果找不到,会依次查找xxhdpi → xxxhdpi → hdpi → mdpi → ldpi。对于不存在的drawable-[density]目录直接跳过,中间任一目录查找到资源,则停止本次查找。



如何知道自己设备的dpi:

float xdpi = getResources().getDisplayMetrics().xdpi;
float ydpi = getResources().getDisplayMetrics().ydpi;


知道设备的dpi后就知道设备首先会在哪个drawable文件夹下去寻找了:dpi范围密度对应范围



设备密度 适配资源文件密度
0dpi ~ 120dpi ldpi
120dpi ~ 160dpi mdpi
160dpi ~ 240dpi hdpi
240dpi ~ 320dpi xhdpi
320dpi ~ 480dpi xxhdpi
480dpi ~ 640dpi xxxhdpi


对于每种密度下的icon应该设计成什么尺寸其实Android也是给出了最佳建议,建议尺寸如下表所示:

资源文件密度 建议尺寸
mipmap-mdpi 48 * 48(博主实测图标16就够了)
mipmap-hdpi 72 * 72(博主实测图标32就够了)
mipmap-xhdpi 96 * 96(博主实测图标48就够了)
mipmap-xxhdpi 144 * 144(博主实测图标64就够了)
mipmap-xxxhdpi 192 * 192(博主实测图标72就够了)


总体匹配规则就是这样:

如果图片所在目录dpi低于匹配目录,那么该图片被认为是为低密度设备需要的,现在要显示在高密度设备上,图片会被放大。

如果图片所在目录dpi高于匹配目录,那么该图片被认为是为高密度设备需要的,现在要显示在低密度设备上,图片会被缩小。

如果图片所在目录为drawable-nodpi,则无论设备dpi为多少,保留原图片大小,不进行缩放。



六种通用密度


Android系统为了简化开发者为多种屏幕设计用户界面的方式,Android将实际屏幕尺寸和范围作了通用规定,称作“根据可用屏幕宽度管理屏幕尺寸的新技术”。六种通用密度为

密度 dpi范围
ldpi(低) ~120dpi
mdpi(中) ~160dpi
hdpi(高) ~240dpi
xhdpi(超高) ~320dpi
xxhdpi(超超高) ~480dpi
xxxhdpi(超超超高) ~640dpi
通用密度是以mdpi(中)为基线配置的,此基线基于第一代Android设备(T-Mobile G1)的屏幕配置。



那么六种通用密度下的缩放倍数是多少呢?以mdpi为基线,各密度目录下的放大倍数(即缩放因子density)如下

密度 放大倍数
ldpi 0.75
mdpi 1.0
hdpi 1.5
xhdpi 2.0
xxhdpi 3.0
xxxhdpi 4.0
例如,当前设备的dpi是480(即xxhdpi),那么对于存放于mdpi目录中的图片会被放大三倍。对于很多设备,其dpi并不刚好是六种通用密度最大dpi,这种情况下,图片的缩放倍数如何计算呢?

稍微思考一下,我们就可以得到通用的缩放倍数(缩放因子)计算方法:对于任意设备,各drawable-[density]目录下的图片放大倍数的计算公式

缩放因子计算公式

那么,图片的实现显示尺寸通过图片尺寸乘以缩放倍数就可以得到了。

参考链接: https://www.cnblogs.com/huihuizhang/p/9473698.html

分享到:
评论

相关推荐

    Android屏幕适配资源

    在Android应用开发中,屏幕适配是一个至关重要的环节,因为Android设备有着各种不同的屏幕尺寸和分辨率。本资源包"Android屏幕适配资源"专注于解决这一问题,提供了values资源,能够帮助开发者轻松实现不同屏幕尺寸...

    Android多分辨率适配

    例如,将图片、布局文件等放在res/drawable-mdpi、res/drawable-hdpi、res/layout-small等目录下。Android系统会自动选择最合适的资源进行加载。对于没有特定密度或尺寸的资源,系统会尝试找到最接近的匹配项,并...

    android drawablle importer

    为了适应所有Android屏幕的大小和密度,每个Android项目都会包含drawable文件夹。任何具备Android开发经验的开发人员都知道,为了支持所有的屏幕尺寸,你必须给每个屏幕类型导入不同的画板。Android Drawable ...

    Android多分辨率适配方案

    首先建立多个 layout 文件夹(drawable 也一样)在 res 目录下建立多个 layout 文件夹,文件夹名称为 layout-800x480 等。需要适应那种分辨率就写成什么。 最后,需要在 AndroidManifest.xml 里面添加一段代码,...

    android多分辨率适配 ,判断平板还是手机,等比例缩小图片.rar

    此外,还可以创建不同密度的资源文件夹,如`drawable-mdpi`, `drawable-hdpi`, `drawable-xhdpi`, `drawable-xxhdpi`等,将不同分辨率的图片放在对应的文件夹中,系统会自动选择最合适的资源。 2. 设备类型判断: ...

    res里面的drawable(ldpi、mdpi、hdpi、xhdpi、xxhdpi)

    drawable 文件夹主要放置 xml 配置文件或者对分辨率要求较低的图片。 drawable-ldpi 文件夹存放低分辨率的图片,例如 QVGA (240x320)。 drawable-mdpi 文件夹存放中等分辨率的图片,例如 HVGA (320x480)。 ...

    Android屏幕适配smallestWidth适配尺寸文件

    密度适配通常通过使用不同密度的资源文件夹(如`drawable-mdpi`、`drawable-hdpi`)来完成,而屏幕大小适配可以通过使用`layout-sw600dp`、`layout-sw720dp`等文件夹来区分平板和大屏手机。 此外,Android还提供了`...

    android适配文件.rar

    为了实现良好的适配,开发者需要创建针对不同屏幕尺寸和密度的资源文件夹,如`res/layout`(布局文件)、`res/drawable`(图片资源)和`res/values`(字符串、颜色等资源)。 在描述中提到的博客链接,`...

    自动生成Android适配不同机型、语言资源文件

    总的来说,适配Android的不同机型和语言资源,是通过创建特定的资源文件夹、编写适配的资源文件和使用自动化工具来完成的。`pxadapter`这样的工具大大简化了这一过程,使得开发者能够更专注于应用功能的实现,而不是...

    android分辨率适配文件生成

    在Android中,我们可以通过使用sw<N>dp前缀的资源文件夹来实现布局的尺寸适配,如`layout-sw320dp`表示最小宽度为320dp的设备。这样,开发者可以为小屏、中屏、大屏和超大屏设备分别创建不同的布局文件,以优化显示...

    android百分比适配

    传统的适配方法是通过使用不同密度的资源文件夹(例如:drawable-mdpi、drawable-hdpi等)来提供不同分辨率的图片和布局,但这对于复杂的UI设计和动态布局调整来说并不够灵活。 "百分比适配"是为了解决这一问题而...

    自动生成Android 不同分辨率尺寸素材图片素材程序

    为了兼容Android手机不同品牌、不同分辨率、不同密度问题,Android需要给图片素材提供不同尺寸规格的图片,通过本程序代码可以方便快捷的自动生成不同分辨率图片用户适配;通过修改程序也可以实现整个文件夹所有图片...

    Android多分辨率多密度下UI适配方案.

    1. 首先是建立多个 layout 文件夹(drawable 也一样),在 res 目录下建立多个 layout 文件夹,文件夹名称为 layout-800x480 等,需要适应那种分辨率就写成什么。 2. 在每个 layout 文件夹下调整 layout 的长宽等...

    Android适配工具

    Android适配工具的核心功能就是将设计稿中的PX值转换为DP值,并根据Android的屏幕密度划分(LDPI, MDPI, HDPI, XHDPI, XXHDPI等)生成相应的资源文件夹,如drawable-ldpi, drawable-mdpi等,每个文件夹内包含适配该...

    适配android各种机型demo

    例如,将图片放在drawable-mdpi、drawable-hdpi等文件夹下,并根据1:1.5:2:3的比例缩放图片大小。 4. **资源维度适配**:在Android中,可以创建尺寸资源文件夹(如values-sw360dp、values-sw600dp等)来针对特定...

    android_px_多屏幕适配生成工具和资源

    2. **提供不同密度的资源**:在项目的res目录下,可以创建不同的资源文件夹(如drawable-ldpi, drawable-mdpi等),存放不同密度的图片和布局文件。系统会自动选择最适合当前设备密度的资源。 3. **使用swdp最小...

    android开发图片素材

    通过将图片放入不同的Drawable资源文件夹,可以实现根据不同状态(按下、默认、选中等)显示不同的图片。 6. 图片加载库 在Android应用中,处理大量图片时,通常会使用图片加载库,如Glide、Picasso或Fresco。这些...

    Android代码-一种非常好用的Android屏幕适配

    **资源维度配置(Resource Qualifiers)**:通过在资源文件夹(如res/layout, res/drawable等)中添加特定的维度配置(如layout-sw600dp, drawable-hdpi等),我们可以为不同的屏幕尺寸和密度提供定制的布局和图片。...

    Android应用源码之android多分辨率适配 ,判断平板还是手机,等比例缩小图片.rar

    总的来说,Android的多分辨率适配需要综合运用资源文件夹、屏幕尺寸判断、等比例缩放图片以及尺寸常量管理等技术,以确保应用在各类设备上都能提供良好的用户体验。通过熟练掌握这些知识点,开发者能够打造出高质量...

    Android图片加载&使用介绍

    #### 三、Drawable文件夹使用 Android 应用中的图片资源通常存储在 `drawable-` 后跟特定密度的文件夹中,例如 `drawable-mdpi`、`drawable-xxxhdpi` 等。正确地放置图片资源可以帮助应用更好地适应不同的屏幕密度...

Global site tag (gtag.js) - Google Analytics