做网站应下哪个软件,seo网站建设教程,比较好的开源cms系统,郑州网站关键字优化引言屏幕适配是 android 开发/面试 绕不开的一个问题。本文 将屏幕适配的知识要点完整展现给各位读者。正文大纲android需要做屏幕适配的原因基础知识点(★★★很重要★★★)屏幕适配攻略正文↓↓↓android需要做屏幕适配的原因关键字#xff1a;android碎片化android面世以来…引言屏幕适配是 android 开发/面试 绕不开的一个问题。本文 将屏幕适配的知识要点完整展现给各位读者。正文大纲android需要做屏幕适配的原因基础知识点(★★★很重要★★★)屏幕适配攻略正文↓↓↓android需要做屏幕适配的原因关键字android碎片化android面世以来google开源了android系统各家厂商各自为政导致屏幕尺寸没有统一标准屏幕的宽高比各种各样屏幕密度也是各个厂家攀比的资本, 导致Android开发者想要用一套代码来适配所有的设备变得格外的困难虽然 谷歌出了 dp单位来替代px但是 dp依然有它无法完全适配的地方。 这个也就是需要我们利用其他手段去 完成适配的地方。面试点Q: 关于屏幕适配为什么 有了dp单位依然要适配呢 A: dp虽然能够解决大部分情况下的适配问题但是针对少数机型无法适配 原因 是 google提供的dp单位在现有的android市场环境下是不可靠的编码时的 dp在运行时会转化成 px此时的px不能准确对照UI的原本设计。 最直观体现就是 同样300dp在A手机上可以占满全宽但是在B手机上占不满或者会超出全宽。 至于为什么dp不可靠 后面会解释。基础知识点(★★★很重要★★★)以下概念很基础但是也很重要基础知识缺少一个环节后面复杂的攻略理解起来就有障碍。1. 像素点像素点是物理概念,用术语来解释就是如下这段话 通常所说的像素就是CCD/CMOS上光电感应元件的数量一个感光元件经过感光光电信号转换A/D转换等步骤以后在输出的照片上就形成一个点我们如果把影像放大数倍会发现这些连续色调其实是由许多色彩相近的小方点所组成这些小方点就是构成影像的最小单位“像素”(Pixel)。简而言之像素就是手机屏幕的最小构成单元。简单来说像素点就是屏幕上色彩区域的最小单位。在所有的设备上1px 都是等同的。UI小姐姐作图一般都会以px为单位。2. 分辨率比如19201080 分辨率表示当前设备的屏幕是由 横向1080 纵向1920 个像素点 组合而成。3. 屏幕尺寸屏幕对角线的长度。 一般以英寸为单位常见的屏幕尺寸有 4.7 5.5 6.0 。4. 屏幕像素密度定义 一平方英寸面积内存在多少个像素点。 同样是 1920*1080 的分辨率存在两款手机一个是4.7英寸一个是6.0英寸这两者的 像素密度是不一样的。 屏幕密度的单位 dpi(dots per inch). 标准屏幕分辨率 160dpi 。即一平方英寸面积存在160像素点。(mdpi).5. 屏幕尺寸分辨率像素密度 三者之间的关系像素密度可以由屏幕尺寸和分辨率计算得出。 计算公式为比如下图所示我这里有一块1920*1080的5寸屏幕通过上面的公式计算得出它的像素密度为 440dpi .可见px是和像素密度有直接关系的 像素单位。6. 密度无关的像素单位(dp或者dip)全英文为density-independent pixel. (注意此处是dip上面的像素密度是 dpi, 千万不要因为这个在面试的时候出丑 ) 使用dp作为长度单位可以保证在不同的屏幕像素密度的手机上显示 很相似的效果。 比如: 使用480x800的手机上要画一条长度为一半屏幕宽的线条我们可以设置线条的长度为 240px而在320x480的屏幕上我们只需要160px但是我们可以直接使用160dp来同时让两个屏幕上的这条线占全宽的一半。px和dp的换算公式为px dp * (dpi / 160) 公式解读 如果有一个屏幕密度为 160dpi的手机在它上面1px1dp 而如果是 320dpi的手机则 1px 0.5dp. 简而言之规律就是 屏幕像素密度(dpi)越高的手机1dp所代表的px就越多.下面解释为什么dp有时候靠不住.如果UI小姐姐以320*480 dpi160的屏幕为标准画了一条长度为160px的线长度为屏幕宽度的一半这个时候你直接用 160dp一般就能完成适配。但是如果这样的布局 运行在320x480分辨率但是屏幕密度为150dpi 略小于 160dpi这个时候 你布局里面写的160dp就会实际超过160px 不再是占屏幕宽的一半而是略微超过。7. 独立比例像素 (sp)全英文为 scale-independent pixel (简称sp或者sip) 专门用于字体大小表示。 推荐使用12sp以上的偶数作为 字体大小, 不要使用奇数或者浮点型小数因为容易造成精度丢失。面试点Q: sp和dp有什么区别 A: 通常情况下dp和sp效果类似但是有一点如果用户 调整了手机字体比如 从标准变成了 超大那么1dp 原本等于1px依然不变但是1sp就会从1px变成3px(只是举个例子数值不必认真). 因此在用户调整字体的情况下同样的布局可能出现 窗口大小不变但是文字尺寸发生变化的情况。屏幕适配攻略↓↓↓1. 布局适配使用多套布局适应不同屏幕。此方法必须要了解 布局限定符的概念。 如图限定符: 在原本的layout后面加上横杠然后加上限定名。形成 layout-XXX的形式具体规则请参考谷歌官网 https://developer.android.google.cn/training/multiscreen/screensizes, 重点摘录如下使用上面的限定符几乎可以解决所有的适配问题但是另外还有一个小技巧帮我们节省工作量 :布局别名.适用情形为当多个加了限定符的 layout.xml中都引用了同一个 子布局而子布局的内容可能相同也可能不同。这个时候使用布局别名可以节省操作量。方案评价: 讲道理这个是下下策因为在你需要修改布局的时候你可能需要修改多套布局这个要多恶心就多恶心懂的人都懂.2 代码适配我们通过java代码去获取屏幕的宽高动态去指定控件的宽高 。 获取屏幕宽高的方式我不想在这里占篇幅读者可自行百度。代码适配一般用于动态创建 控件或者自定义view自己绘制图形的时候。 特别提一下接口适配当你去向后台请求图片的时候我们可以在参数中带入屏幕的宽高或者是控件的宽高来获取我们想要的图片在图片返回之后直接就能显示得最优而不需要我们app代码中多动手脚。方案评价这个比下下策稍微好一点但是 控件大小直接进入了代码还是让代码不够雅观.3. 布局组件的适配尽量直接通过一套布局解决所有的麻烦这个就叫布局组件的适配。这个是上上策. 包含如下手段使用像素密度无关的单位 dp sp 杜绝使用绝对布局多使用相对和线性布局 多使用 wrap_content match_parent 以及线性布局的权重 多用 minWidth minHeight,lines 等属性 使用多套限定的 dimens中定义的尺寸可能面试点Q:同一个布局文件中我使用线性布局和相对布局都可以达成目的那么如何抉择 A: 使用相对布局很有可能出现 第一次测量不满意的情况从而会测量第二次。如果两者都可以达成目的并且两者的布局层级相同并且线性布局中没有使用到权重(权重可能也会触发第二次测量)此时优先使用线性布局。 除此之外都选择相对布局。结语屏幕适配工作中并不困难但是面试多会问到。 现今主流的两种完美适配方案有头条方案(直接变更DisplayMetrics中的density)以及 多套dimens适配方案两者各有千秋。在这我也分享一份自己收录整理的Android学习PDF架构视频面试文档源码笔记还有高级架构技术进阶脑图、Android开发面试专题资料高级进阶架构资料这些都是我闲暇还会反复翻阅的精品资料总之也是在这里帮助大家学习提升进阶也节省大家在网上搜索资料的时间来学习也可以分享给身边好友一起学习如果你有需要的话可以点赞评论转发关注我然后私信我【进阶】我发给你