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.75.56.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的手机,在它上面,1px=1dp;
而如果是 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(只是举个例子,数值不必认真).
因此,在用户调整字体的情况下,同样的布局,可能出现 窗口大小不变,但是文字尺寸发生变化的情况。


屏幕适配攻略

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(资料价值较高,非无偿)

总结

其实客户端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

Android大厂面试真题全套解析

2017-2020字节跳动Android面试真题解析PDF
然而Android架构学习进阶是一条漫长而艰苦的道路,不能靠一时激情,更不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值