在很久以前,对于Android开发者来说,屏幕适配是一件很让人头疼的事情。当是今天,学习了这篇文章之后,你会觉得屏幕适配?so easy.

为什么要进行屏幕适配。这里就不多说了。一句话,因为Android牛逼啊。。。市场上Android的手机样式成百上千。

开始进入正题,先来讲讲几个基本概念。

1.屏幕尺寸,屏幕分辨率,屏幕像素密度

屏幕尺寸:指手机的屏幕对角线的长度,单位是英寸,1英寸=2.54厘米。手机厂商所说的6.2寸,6.67寸等

屏幕分辨率:指在横纵向上的像素点数,单位是px,1px=1个像素点。如1080*1920,1440*2560等

屏幕像素密度:指每英寸上的像素点数,单位是dpi,即“dot per inch”的缩写。屏幕像素密度与屏幕尺寸和屏幕分辨率有关,在单一变化条件下,屏幕尺寸越小、分辨率越高,像素密度越大,反之越小。

Android 简单快捷高效的屏幕适配_第1张图片

2. dp、dip、dpi、ppi、sp、px

dp和dip是同一个东西,都是Density Independent Pixels的缩写,即密度无关像素

dpi和ppi(手机厂商叫法)是同一个概念,即dot per inch,每英寸的里具有的像素点,即屏幕像素密度

px(像素)即屏幕上的点。前面的分辨率就是以像素为单位,通常UI设计,Android原生API,代码里面的计量单位就是px

它们三者的转化关系为:dp*dpi/160 = px。比如1dp x 320dpi/160 = 2px  .在Android中,规定以160dpi为基准,1dp=1px

sp 即Scale-independent pixels,它是安卓的字体单位

3.mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi

mdpi之前还有个ldpi,随着移动设备不断升级,都0202年了,市场上已经看不到这种像素密度设备了,所在不考虑适配了

hdpi、xdpi、xxdpi用来修饰Android中的drawable文件夹及values文件夹,用来区分不同像素密度下的图片和dimen值.

一般情况下的普通屏幕:ldpi是120dpi,mdpi是160dpi(基准),hdpi是240dpi,xhdpi是320dpi ,xxhdpi 是480dpi,xxxhdpi 是640dpi

Google官方指定按照下列标准进行区分:Android 简单快捷高效的屏幕适配_第2张图片

在开发时把UI给的图片放到相应的文件夹下,在不同分辨率的手机上会自动选取对应文件夹下的图片

对于像素密度(LDPI、MDPI、HDPI、XHDPI、XXHDPI 和 XXXHDPI)应按照 0.75  :  1: 1.5 : 2 : 3 : 4 的比例进行缩放。如下图

Android 简单快捷高效的屏幕适配_第3张图片

下面来做个实验,在六个文件夹下放置六张对于尺寸的图片并做上标记如下图:

Android 简单快捷高效的屏幕适配_第4张图片

果然如预期的不同屏幕密度的手机加载了对应文件夹下的图片

然后我删除其中的xhdpi问价加下的图片,然后运行320dpi的那部手机看它在加载不到对于文件夹下图片时的反应如下:

Android 简单快捷高效的屏幕适配_第5张图片

结果它读取到了比自己屏幕密度高一级的xxhdpi文件夹下的图片.

接着我把xxhdpi文件夹下的图片也删除,运行后它读取到了xxxhdpi文件夹下的图片;

再接着我把xxxhdpi文件夹下的图片也删除,运行后它读取到了hdpi文件夹下的图片;

再接着我把hdpi文件夹下的图片也删除,运行后它读取到了mdpi文件夹下的图片;

再接着我把mdpi文件夹下的图片也删除,运行后它读取到了drawable文件夹下的图片了,出人意料的忽略ldpi文件夹下的图片;

此时运行160dpi的机器同样跳过了ldpi文件夹直接读取drawable文件夹下的图片了

说明ldpi文件夹已被谷歌粑粑忽略,无需去适配了

总结:图片在对应文件夹找图未果时,会先就近向上(高分辨率文件夹)找图,未果后再向下(低分辨率文件夹)找图。经过再测试,发现mdpi(标准)是一个临界点,一旦程序向下在mdpi文件夹未找到对应图片就会跑到drawable文件夹取图

图片的适配到此结束,现在开始做dimen尺寸的适配

目前业界最好的适配方案就是smallestWidth 限定符 适配原理

原理就不说了,网上一大堆,下面开始具体操作

1.在Android stuido中安装插件screenMatch

Android 简单快捷高效的屏幕适配_第6张图片

然后在去下载下面的链接中的dimens文件到module的values文件夹下

百度网盘链接:https://pan.baidu.com/s/10q_9WhfLv4CvAwr0Vb4xBQ      提取码:ay0u

接着随意右键一个文件选择screenMatch,确认就会生成一堆对应的文件夹Android 简单快捷高效的屏幕适配_第7张图片

然后根据自己的项目需求去设置需要配置的尺寸,点击项目根目录的screenMatch.properties,需要先执行过一次screenMatch,

Android 简单快捷高效的屏幕适配_第8张图片

配置完新的尺寸后需要再次右键文件执行screenMatch。

在xml中使用:Android 简单快捷高效的屏幕适配_第9张图片

在代码中使用:

到此屏幕适配的工作就完成了。

本文参考:https://blog.csdn.net/zhaokaiqiang1992/article/details/45419023#%E5%B1%8F%E5%B9%95%E5%B0%BA%E5%AF%B8

 

 

 

 

 

 

 

 

更多相关文章

  1. android中图片的三级cache策略(内存、文件、网络)之三:文件缓存策略
  2. Android屏幕适配总结终极方案
  3. YUV420P、YUV420SP、NV12、NV21和RGB互相转换并存储为JPEG以及PN
  4. Android多分辨率和多屏幕的布局适配详解
  5. Android实现OCR扫描识别数字图片之图片扫描识别
  6. android根据屏幕尺寸区分设备类型,phone或者pad

随机推荐

  1. android 开发使用 kotlin 进行点击事件监
  2. Android(安卓)ImageView去掉周围的白边
  3. ubuntu 12.04 下安装android编译环境
  4. Android(安卓)Google应用移植时包依赖关
  5. cordova打包android apk
  6. Android下载完文件打开
  7. 给android设置代理
  8. android 存储操作 大小显示换算 kb mb KB
  9. Android(安卓)对.properties文件的读取
  10. android 开发 实例 下部主导航(1)