当前位置:网站首页>andorid系统layout、values、drawable适配
andorid系统layout、values、drawable适配
2022-07-28 17:34:00 【Alex_designer】
andorid屏幕适配
| 密度类型 | 代表的分辨率(px) | 屏幕密度(dpi) | 换算(px/dp) | 比例 |
|---|---|---|---|---|
| 低密度(ldpi) | 240x320 | 120 | 1dp=0.75px | 3 |
| 中密度(mdpi) | 320x480 | 160 | 1dp=1px | 4 |
| 高密度(hdpi) | 480x800 | 240 | 1dp=1.5px | 6 |
| 超高密度(xhdpi) | 720x1280 | 320 | 1dp=2px | 8 |
| 超超高密度(xxhdpi) | 1080x1920 | 480 | 1dp=3px | 12 |
在Android中,规定以160dpi(即屏幕分辨率为320x480)为基准:1dp=1px
首选smallestWidth
smallestWidth 限定符适配
- 屏幕分辨率限定符适配是根据屏幕分辨率的,Android 设备分辨率一大堆,而且还要考虑虚拟键盘,这样就需要大量的 dimens.xml 文件。因为无论手机屏幕的像素多少,密度多少,90% 的手机的最小宽度都为 360dp,所以采用 smallestWidth 限定符适配只需要少量 dimens.xml 文件即可。
- 屏幕分辨率限定符适配采用的是 px 单位,而 smallestWidth 限定符适配采用的单位是 dp 和 sp,dp 和 sp 是 google 推荐使用的计量单位。又由于很多应用要求字体大小随系统改变,所以字体单位使用 sp 也更灵活。
- 屏幕分辨率限定符适配需要设备分辨率与 values-xx 文件夹完全匹配才能达到适配,而 smallestWidth 限定符适配寻找 dimens.xml 文件的原理是从大往小找,例如设备的最小宽度为 360dp,就会先去找 values-360dp,发现没有则会向下找 values-320dp,如果还是没有才找默认的 values 下的 demens.xml 文件,所以即使没有完全匹配也能达到不错的适配效果。
- 无论是宽度还是高度,哪一边小就认为哪一边是“最小宽度”
- 限定符类型:
- 尺寸(size)限定符
- 最小宽度(Smallest-width)限定符
- 布局别名
- 屏幕方向(Orientation)限定符
宽高限定符适配 这种做法不推荐使用, 比如1920x1080的手机就一定要找到1920x1080的限定符,否则就只能用统一的默认的dimens文件了。而使用默认的尺寸的话,UI就很可能变形,简单说,就是容错机制很差。
1.layout-sw500dp
这里的sw代表smallwidth的意思,当你的屏幕的绝对宽度大于500dp时,屏幕就会自动调用layout-sw500dp文件夹里面的布局。
注意:这里的绝对宽度是指手机的实际宽度,与手机横竖屏无关。
2.layout-w500dp
当你的屏幕的相对宽度大于500dp时,屏幕就会自动调用layout-w500dp文件夹里面的布局。
注意:这里的相对宽度是指手机相对放置的宽度;即当手机竖屏时,为较小边的长度;当手机横屏时,为较长边的长度。
3.layout-h500dp
与layout-w500dp的使用一样,只是这里指的是相对的高度。
注意:这里的相对高度是指手机相对放置的高度;即当手机竖屏时,为较长边的长度;当手机横屏时,为较小边的长度。但这种方式很少使用,因为屏幕在相对高度上,即在纵向上通常能够滚动导致长度变化,而不像横向那样基本固定,因而这个方法灵活性差,google官方文档建议尽量使用这种方式。
实例:密度为240 尺寸为:1280x720和1920x1080 应该放在哪个适配文件夹下
Android中,规定以160dpi(即屏幕分辨率为320x480)为基准
对应的密度比为:
160 1
240 1.5
320 2
用最小做为宽度:1280x720 是720,1920x1080是1080
720/1.5 =480
1080/1.5 =720
sw480dp
sw720dp
layout 就是layout-sw720dp , 是values 就是values-sw720dp
参考:
边栏推荐
- Pointer learning of C language -- the consolidation of pointer knowledge and the relationship with functions, arrays and structures
- 英语文章翻译-英语文章翻译软件-免费批量翻译
- RTC clock: a calendar
- Learn from Li Mu in depth -softmax return
- Application of time series database in monitoring operation and maintenance platform
- 【已解决】AC86U ML改版固件虚拟内存创建失败,提示USB磁盘读写速度不满足要求
- Cvpr21 unsupervised anomaly detection cutpaste:self supervised learning for anomaly detection and localization
- 【笔记】《结网:互联网产品经理改变世界》
- Rust 入门指南(rustup, cargo)
- Application value of MES production management system to equipment
猜你喜欢

Adobe Flash player 34.0.0.92 and available version modification methods (2021-01-23

Time waits for no man. The rise of TSDB is at the right time

力扣 1331. 数组序号转换
![[radar] radar signal online sorting based on kernel clustering with matlab code](/img/56/1f8e8690b47fc4a1f101d4e530b87f.png)
[radar] radar signal online sorting based on kernel clustering with matlab code

使用Xilinx MIG验证硬件DDR设计

架构实战营第8模块作业

CVPR19 - 调参干货《Bag of Tricks for Image Classification with Convolutional Neural Network》

Get to know nodejs for the first time (with cases)

Swing事件处理的过程是怎样的?

It is the best tool to evaluate six kinds of map visualization software in three categories
随机推荐
Image processing web application development tutorial
Server body 21: pre compilation processing by different compilers (a brief introduction to MSVC and GCC)
DevCon. Exe export output to the specified file
Method of win7 system anti ARP attack
初步学习函数(第3篇博客)
【笔记】《结网:互联网产品经理改变世界》
R language text mining and natural language processing tutorial
The mystery of ID number
用LEX(FLEX)生成PL语言的词法分析器
Random finite set RFs self-study notes (6): an example of calculation with the formula of prediction step and update step
ES6 new - arrow function
图书管理数据库系统设计
剑指 Offer II 109. 开密码锁
Powerbi time series analysis, prediction and visualization tutorial
Doxygen文档生成工具
How many of the top ten test tools in 2022 do you master
IMU heating
SaltStack进阶
测试开发备忘
BLDC 6步换相 simulink