提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
主要是记录安卓不同资源文件夹对图片的缩放
提示:以下是本篇文章正文内容,下面案例可供参考
一、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,就不会失真。
本文主要介绍了Android系统中不同分辨率的资源文件夹(如ldpi, mdpi, hdpi等)的工作原理,以及如何根据设备的dpi值来确定图片的适配情况。通过示例代码展示了如何获取设备分辨率,并解释了为何在不同dpi设备上,同一图片显示清晰度会有所不同。建议开发者根据设备的实际像素和文件夹对应的倍率关系,合理放置资源,确保在各种设备上都能得到清晰的显示效果。"
124573055,7449817,C++11:unique_lock详解与应用,"['C++', '并发编程', '智能指针', '同步机制']
609

被折叠的 条评论
为什么被折叠?



