3、屏幕尺寸(in):
手机对角线的物理尺寸,单位 英寸(inch),一英寸大约2.54cm,常见的尺寸有4.7寸、5寸、5.5寸、6寸
4、屏幕像素密度(dpi):
每英寸长度上像素点个数。
例如每英寸内有160个像素点,则其像素密度为160dpi。
公式: 像素密度=像素/尺寸 (dpi=px/in)
5、标准屏幕像素密度(mdpi):
每英寸长度上还有160个像素点,即称为标准屏幕像素密度(mdpi)。
6、像素密度等级:
手机真实像素密度与标准屏幕像素密度(160dpi)的比值。官方给出的0.75、1、1.5、2、3、4,即对应120dpi、160dpi、240dpi、320dpi、480dpi、640dpi。
7、密度无关像素(dp):
density-independent pixel,叫dp或dip,与终端上的实际物理像素点无关。可以保证在不同屏幕像素密度的设备上显示相同的效果,是安卓特有的长度单位。
8、独立比例像素(sp):
scale-independent pixel,叫sp或sip,字体大小专用单位,可根据字体大小首选项进行缩放;
推荐使用12sp、14sp、18sp、22sp作为字体大小,不推荐使用奇数和小数,容易造成精度丢失,12sp以下字体太小。
9、尺寸、像素、像素密度关系:
10、px与dp关系:
像素=dp*像素密度等级,即px=dp*(dpi/160)
注意进行Android设备的屏幕适配操作,不是单单对屏幕尺寸多样的各种设备进行的适配,在诸多的物理尺寸的背后是屏幕的分辨率,现在市面上占比最多的六种分辨率:480*800、320*480、480*854、540*960、720*1280、1080*1920。在日常适配中只要做好对这几个设备的适配,就能很好的适配其他机型。但是在这几种分辨率的背后存在的更为根本的数据是设备的屏幕像素密度。在Google文档中对于屏幕的像素密度进行了几种规定!
另外也需注意对安卓平板、安卓电视等大尺寸、超大尺寸设备的适配。
1、适配误区
在进行适配的时候,人们总是关注于:代码、Layout、Dimens、图片、权重,这几种适配方式并不是屏幕适配的全部方案,除此之外还存在多种小细节来实现屏幕适配。
如何理解使用dp为单位进行适配?:
但是,使用密度无关像素(dp)也不能做到适配所有屏幕!
2、造成误差原因
在长期的Android发展过程中,由于Android设备的增多,Google制定的屏幕密度标准(mdpi、hdpi、ldpi等),在众多厂家的生产过程中,已经被打破,人们没有生产数完全符合屏幕密度标准的Android设备,对于真实手机的屏幕密度值,是在Google标准的周围浮动变化的,但是不乏存在一些厂商生产的设备偏离Google的屏幕密度标准比较大,这个时候再使用dp作为单位就不能完完全全的完成适配操作!(dp只有在大家标准统一的情况下才有更好的发展)
在所有计算公式中存在误差:在计算真实像素密度时运用了开方运算和除法运算,导致所得结果存在误差。
理论计算造成的误差:
在计算对角线上像素点个数时,我们使用勾股定理计算得出,但实则存在误差:
-
若将像素长度当做1,分辨率指的是横纵向上的1的个数,计算记过表示的是对角线上有多少个1,但理论上对角线上 根号2 的个数才是像素点的个数!
-
屏幕对角线并不会和像素对角线重合,使计算结果存在误差。
3、ldpi、mdpi、hdpi、xhdpi、xxhdpi的使用
官方截图:
4、使用wrap_content、match_parent、权重
要确保布局的灵活性并适应各种尺寸的屏幕,应使用 “wrap_content” 、“match_parent”和权重控制某些视图组件的宽度和高度。
使用 “wrap_content”,系统就会将视图的宽度或高度设置成所需的最小尺寸以适应视图中的内容,而 “match_parent”(在低于 API 级别 8 的级别中称为 “fill_parent”)则会展开组件以匹配其父视图的尺寸。
如果使用 “wrap_content” 和 “match_parent” 尺寸值而不是硬编码的尺寸,视图就会相应地仅使用自身所需的空间或展开以填满可用空间。此方法可让布局正确适应各种屏幕尺寸和屏幕方向。
5、使用相对布局,不要使用绝对布局
我们大部分时候使用的都是线性布局、相对布局和帧布局,绝对布局由于适配性极差,所以极少使用。
关于布局的使用应该具体情况具体分析,在进行电视机顶盒的开发中就是使用的是绝对布局。
6、使用限定符进行适配操作
使用尺寸限定符——large
使用最小宽度限定符——swdp
使用屏幕方向限定符
7、多套layout适配
res/values/layouts.xml:
res/values-sw600dp-land/layouts.xml:
res/values-sw600dp-port/layouts.xml:
res/values-large-land/layouts.xml:
res/values-large-port/layouts.xml:
8、使用自动拉伸位图
支持各种屏幕尺寸通常意味着您的图片资源还必须能适应各种尺寸。例如,无论要应用到什么形状的按钮上,按钮背景都必须能适应。
如果在可以更改尺寸的组件上使用了简单的图片,您很快就会发现显示效果多少有些不太理想,因为系统会在运行时平均地拉伸或收缩您的图片。解决方法为使用自动拉伸位图,这是一种格式特殊的 PNG 文件,其中会指明可以拉伸以及不可以拉伸的区域。
.9的制作,实际上就是在原图片上添加1px的边界,然后按照我们的需求,把对应的位置设置成黑色线,系统就会根据我们的实际需求进行拉伸。
9、普通图片处理
稍后会详细介绍。
10、dimens使用
如上图,我将市面上各分辨率下的屏幕尺寸,取了平均数,算出对应的真实的屏幕像素密度,与理论要求的屏幕像素密度作了对比,比值在倒数第二列。发现:(干货要来了!)真实像素密度与理论像素密度的比值大致分为两类,取其平均数,一类在1.15左右,另一类则在0.89左右。巧了,它们两类正好各自对应w320dp和w360dp的宽度限定符!所以,dimens只需写两套即可(values-w320dp、values-w360dp),其name与真实数值的比值就是刚刚我们算出的两个平均数! 以后我们就不需要对应各种分辨率写多套dimens了,两套dimens即可。
1、logo
logo需要36*36、48*48、72*72、96*96、144*144、192*192px,图片使用正方形形状,在某些机型上面,会自动显示为圆角正方形;
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
最后
对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!
最后,我再重复一次,如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究。
对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
为了大家能够顺利进阶中高级、架构师,我特地为大家准备了一套高手学习的源码和框架视频等精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。
以下是今天给大家分享的一些独家干货:
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!
请集中精力,对基础和重要的事情做深度研究**。
对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。
为了大家能够顺利进阶中高级、架构师,我特地为大家准备了一套高手学习的源码和框架视频等精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。
以下是今天给大家分享的一些独家干货:
[外链图片转存中…(img-snElyF1u-1711959303440)]