android drawable文件夹放入图片规则

本文详细解释了在Android开发中,不同密度屏幕下资源文件如何被加载和缩放的机制。特别是针对.9图片在不同dpi文件夹下的表现差异进行了深入分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    1、在中Menifest中添加子元素,android:anyDensity="true"时,应用程序安装在不同密度的终端上时,程序会分别加载xxhdpi、xhdpi、hdpi、mdpi、ldpi文件夹中的资源。

    相反,如果设为false,即使在文件夹下拥有相同资源,应用不会自动地去相应文件夹下寻找资源。(引用)

    2、如果有默认文件夹drawable,则系统如果在其他dpi文件夹下找不到图片时会使用drawable下面的图片,但是系统使用默认drawable文件夹和drawable_dpi文件夹下图片的方式不同:

    drawable文件夹下图片首先进行的是普通的缩放,再进行.9规则缩放,而drawable_dpi下图片则只会进行.9规则缩放。

示例:

    现在有一部屏幕密度为320的手机,则会使用drawable_xhdpi文件夹下的图片,但是如果在layout中规定使用图片作为某控件背景,控件高度为50dp,而drawable_xhdpi下图片高度为50sp,这个时候则会进行.9规则缩放,高度扩大一倍

但是如果在drawable图片下使用此图片,则会先进行普通缩放,再进行.9缩放

原始图片:


大小:343*57


布局代码:

    <pre name="code" class="java">    <ImageView
        android:layout_width="171dp"
        android:layout_height="50dp"
        android:src="@drawable/spinner"/>
    <Spinner
        android:layout_width="171dp"
        android:layout_height="80dp"
        android:layout_marginTop="50dp"
        android:background="@drawable/spinner"></Spinner>


 


放入drawable后效果


分析:明明171dp在xhdpi中是372px,为什么宽度会进行.9规则缩放?因为在drawable中图片会先进行普通缩放,先将373*57转化为373dp*57dp,然后发现view中只有171dp,所以再进行.9规则缩放,将长度缩短两倍。同理,高度为80dp,所以再将高度进行.9规则缩放,拉长1.6倍。

放入drawable-xhdpi后效果

分析:可以看出才,长度没有进行.9规则缩放,高度进行了.9规则缩放。原因是系统分析图片长度为373px,view为171dp宽,转化为px为372,基本无需缩放,高度为80dp,转化为px为160,需要拉伸3.2倍,所以才会出现高度拉伸比上一张图片更剧烈的情况。

分析


Ps

这点对于非.9图片没有影响


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值