安卓分辨率文件夹详解

本文主要介绍了Android系统中不同分辨率的资源文件夹(如ldpi, mdpi, hdpi等)的工作原理,以及如何根据设备的dpi值来确定图片的适配情况。通过示例代码展示了如何获取设备分辨率,并解释了为何在不同dpi设备上,同一图片显示清晰度会有所不同。建议开发者根据设备的实际像素和文件夹对应的倍率关系,合理放置资源,确保在各种设备上都能得到清晰的显示效果。" 124573055,7449817,C++11:unique_lock详解与应用,"['C++', '并发编程', '智能指针', '同步机制']

 

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

 

文章目录


前言

主要是记录安卓不同资源文件夹对图片的缩放


提示:以下是本篇文章正文内容,下面案例可供参考

一、Andorid不同文件夹分辨率解释

1、看下获取的数据

        /*
        *2.75dpi drawable  240*2.75=660                160=160*1
        *2.75dpi ldpi      660/0.75=880                120=160*0.75
        *2.75dpi mdpi      240*2.75=660                160=160*1
        *2.75dpi hdpi      660/1.5=440                 240=160*1.5
        *2.75dpi xhdpi     660/2.0=330                 320=160*2
        *2.75dpi xxhdpi    660/3.0=220                 480=160*3
        *2.75dpi xxxhdpi   660/4.0=165                 640=160*4
        *2.75dpi nodpi     240                         以px为准
        *
        *0.75dpi drawable  240*0.75=180                160=160*1
        *0.75dpi ldpi      180/0.75=240                120=160*0.75
        *0.75dpi mdpi      240*0.75=180                160=160*1
        *0.75dpi hdpi      180/1.5=120                 240=160*1.5
        *0.75dpi xhdpi     180/2.0=90                  320=160*2
        *0.75dpi xxhdpi    180/3.0=60                  480=160*3
        *0.75dpi xxxhdpi   180/4.0=45                  640=160*4
        *0.75dpi nodpi     240                         以px为准
        * */

我们都知道安卓下面的资源文件夹有drawable,drawable-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi,drawable-xxhdpi,drawablexxxhdpi,drawable-npdpi。

其实都是以dpi为1来进行计算的,各个文件夹默认对应的关系倍数为最右侧所示,以mdpi为基准也就是1,那么ldpi就是0.75,hdpi为1.5......平时默认的drawable就是以mdpi为基础的。

在实际测试中,先获取设备的分辨率,代码为

final float scale = getResources().getDisplayMetrics().density;

获取该图片的大小宽度为

<ImageView
        android:id="@+id/iv"
        android:src="@drawable/aa"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

ImageView imageView = findViewById(R.id.iv);
int width = imageView.getWidth();
Log.e("MainActivity","width="+width);

中间的数据880、660、240、180就是实际获取到的宽度

在设备dpi为2.75中,mdpi的获取的尺寸为2.75*240=660,就是在这个设备中能显示660px,那肯定是有点模糊的,其他的大小根据660与相应倍数去推算。

在设备dpi为0.75中,mdpi的获取的尺寸为0.75*240=180,所有如果你把图片放在mdpi的时候照片是模糊的,该设备的像素为240px*240px,但是你现在获取到的只是180px,如果你设置matchParent那就是模糊的。

所以应该放在ldpi中,那么就是240px,就不会失真。

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值