4
屏幕的分辨率越大,屏幕的画面就越清晰,画面就越细腻,屏幕密度就越大
drawable目录和mipmap目录的区别:mipmap放的是app的logon图标,drawable中放的是app的图标。
不同分辨率的目录 屏幕密度(dpi) 屏幕分辨率 密度比
mipmap-xxxhdpi 超超超高分辨率目录 640 px 1440*2560 4 1dp=4px
mipmap-xxhdpi 超超高分辨率目录 480 px 1080*1920,1080×2340, 1080*2280 3 1dp=3px
mipmap-xhdpi 超高分辨率目录 320 px 720*1280 768*1280 2 1dp=2px
mipmap-hdpi 高分辨目录 240 px 480*800 480*854 1.5 1dp=1.5px
mipmap-mdpi 中等分辨率目录 160 px 基准 320*480 1 1dp=1px
mipmap-ldpi 低分辨率目录 120 px 240*320 0.75 1dp=0.75px
各个分辨率目录下的比值:4:3:2:1.5:1:0.75
图片适配:
1.最先会加载当前手机分辨率对应的目录下的图标,如果当前手机分辨率对应的目录下没有这个图标,那么就先从高分辨率目录下加载相应的图标.
问题1:低分辩的图片运行在高分辨率的手机上会有什么现象?(拉伸和失真)
问题2: 高分辨的图片运行在低分辨率的手机上会有什么现象?(压缩和失真)
问题3:低分辨率的图标放在高分辨率的drawable目录下,占用的内存会变大
问题4:不同的分辨率的目录对应的不同的分辨率图标,会出现什么问题? apk体积过大
解决方案:
1:切一套主流分辨率图或者切两套主流分辨率图,分别放在主流分辨率目录下面比如:drawable-xxhdpi drawable-xhdpi下面
2.其他一些背景图,为了防止拉伸或者压缩失真,可以将图片做成png格式的图片(不管如何拉伸和压缩都不会模糊失真);
png格式的图片四条黑线分别代表什么意思?
1:上边的黑线 代表当前图片横向拉伸区域
2:左边的黑线 代表当前图片纵向拉伸区域
3:下边的黑线 代表当前图片中的内容横向显示的区域
4:右边的黑线 代表当前图片中的内人纵向显示的区域
问题5:不同分辨率的目录下对应的图片都是多少分辨率的?
mdpi:目录下默认放的小机器人图标是分辨率是48*48
(上家单位mdpi目录下放的图标的分辨率是40*40)
布局适配(重点)
原理:今日头条适配与DP适配方案(如下:)一样 https://github.com/JessYanCoding/AndroidAutoSize
PX适配
应用场景:当原型设计图上标注控件或者布局的单位都是PX
原理:现在常用的屏幕分辨率是1280*720或者1080*1920,一般美工也会根据这个分辨率给原型图(设计图).原型图上(设计图上)标注的都是px,以主流的分辨率1280*720为基准,把所有的宽度切成720份,高度切成1280份,其他的尺寸基于这个基准等比缩放
用法:
1.把screenMatchPX.bat和screenMatchPX.jar两个文件拷贝到你的项目的main目录下;
2.修改screenMatchPX.bat文件中你需要适配的屏幕参数;
3.进到screenMatchPX.bat文件所在的硬盘位置,双击执行.执行是不要在AS里面双击,AS不可执行bat文件(over)
DP适配(最小资源限定符适配|最小宽度(SmallestWidth)适配方案SW 限定符适配方案)
应用场景:当原型设计图上标注的单位都是dp的话,专门的dp适配方案 原理:以360dp为基准,其他的尺寸基于这个基准等比缩放.
用法:
1、默认的values文件夹中需要一份特定的dimens.xml文件
2、把screenMatchDP.bat和screenMatchDP.jar两个文件拷贝到你项目的main目录下;
3、修改screenMatchDP.bat文件中你需要适配的屏幕dp参数;
4、进到screenMatchDP.bat文件所在的硬盘位置,双击执行。执行是不要在AS里面双击,AS不可执行bat文件(over);
(注意):如果原型设计图标注得到控件或者布局宽高单位都是px,那么用DP适配的话,需要用标注的值除以密度比,那么结果就是在布局中声明的那个值,
比如设计图上的分辨率为:750*1334 上面标注的Button的宽度是56px,高度是40px 密度比是750/360=2.08833 那么在布局中Button的宽度是56px/2.08833=26.9dp 布局中的高度就是40px*2.08333=19.2dp
<Button android:layout_width="@dimen/dp_26_9" android:layout_height="@dimen/dp_19_2" /> 如果标注图上标注的都是dp单位,假如上面标注的Button的宽是56dp,高度是40dp <Button android:layout_width="@dimen/dp_56" android:layout_height="@dimen/dp_40" />
网友评论