屏幕适配android
Android系统如何在多个资源文件夹下查找匹配最合适的资源:查找的原则是先找限定符目录下的资源,找不到就就近向上找,一直找不到在回来向下找,比如xhdpi的需求先找xhdpi文件资源,找不到就到xxhdpi找,找不到再到xxxhdpi找,找不到再到hdpi,找不到再到mdpi
需求xhdpi资源, xhdpi--->xxhdpi--->xxxhdpi---->hdpi--->mdpi--->ldpi--->无限定符的文件找
适配的三个因素:屏幕尺寸、屏幕分辨率、屏幕像素密度sqrt(分辨率高*分辨率高+分辨率宽*分辨率宽)/尺寸 ≈ 像素密度
显示分辨率就是屏幕上显示的像素个数,分辨率160×128的意思是水平方向含有像素数为160个
五种主流的像素密度(MDPI、HDPI、XHDPI、XXHDPI 和 XXXHDPI)应按照 1:1.5:2:3:4 的比例进行缩放
比如只有hdpi有一个500x500的图片,要是在xxhdpi中调用,及1.5:3,那就是1000x1000的图片
比如启动图标标准
手机显示像素 = 图片实际像素尺寸 × 机型DPI / 所在资源目录DPI
支持各种屏幕尺寸
1,控制View的高宽,使用wrap_content(自适应大小)、match_parent(强制扩展到父元素宽高)、weight(权重,LinearLayout特有属性),
2,
使用相对布局,禁用绝对布局
单位使用dp代替px,根据设计稿的按什么原型标注,有px转为dp,比如设计图按照720设计,那就是20px标注=10dp;
字体使用sp,sp和dp类似
3,使用尺寸限定符
比如res/layout-large较大屏幕(例如 7 英寸或更大的平板电脑)的设备上选择此布局,对于最小宽度大于等于 600 dp 的设备,系统会选择 layout-sw600dp,
可使用限定符的 drawable,layout,values
4,使用 .9自动拉伸图片,使用非密度制约像素 dp,sp 1dp = 1px * (sqrt(a*a+b*b)/c)/160
像素密度 假设a,b分别为两个直角边,c为斜边,由勾股定理可得出计算方式:sqrt(a*a+b*b)/c
5,最后带java代码中适配
0dpi ~ 120dpi | ldpi |
120dpi ~ 160dpi | mdpi |
160dpi ~ 240dpi | hdpi |
240dpi ~ 320dpi | xhdpi |
320dpi ~ 480dpi | xxhdpi |
480dpi ~ 640dpi | xxxhdpi |
- dp(设备独立像素)与px的转换
因为ui设计师给你的设计图是以px为单位的,Android开发则是使用dp作为单位的,那么我们需要进行转换:
| 密度类型 | 代表的分辨率(px) | 屏幕密度(dpi)|换算(px/dp)
| --------------------- |:-------------:| -------------------:| -------------:|
| 低密度(ldpi) 240x320 120 1dp=0.75px
| 中密度(mdpi) 320x480 160 1dp=1px
| 高密度(hdpi) 480x800 240 1dp=1.5px
| 超高密度(xhdpi) 720x1280 320 1dp=2px
| 超超高密度(xxhdpi) 1080x1920 480 1dp=3px
sp和dp很类似但唯一的区别是,Android系统允许用户自定义文字尺寸大小(小、正常、大、超大等等),当文字尺寸是“正常”时1sp=1dp=0.00625英寸,而当文字尺寸是“大”或“超大”时,1sp>1dp=0.00625英寸。
参考:
http://www.cocoachina.com/android/20151030/13971.html
http://blog.csdn.net/dfskhgalshgkajghljgh/article/details/50564682
http://www.jianshu.com/p/ec5a1a30694b
PPi和Dpi的区别
分辨率只能用来描述图片的像素信息,不能描述图片清晰度
PPI只能用来描述屏幕的显示密度,也不能描述图片的清晰度
DPI才能用来描述图片显示的清晰度,表示图片在屏幕上的显示效果。
当图片分辨率与屏幕显示像素相同时, DPI与PPI值相等
当图片分辨率大于屏幕显示像素时, DPI与PPI值相等,图片显示较差
当图片分辨率小于屏幕显示像素时, DPI值< PPI值相等,图片显示正常,屏幕未达到最佳显示效果。
全屏的适配,刘海屏和虚拟按键
//显示到刘海区if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {WindowManager.LayoutParams lp = getWindow().getAttributes();lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;getWindow().setAttributes(lp);}//隐藏虚拟按键if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) {View view = this.getWindow().getDecorView();view.setSystemUiVisibility(View.GONE);} else if (Build.VERSION.SDK_INT >= 19) {View decorView = getWindow().getDecorView();int uiOptions =View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN;decorView.setSystemUiVisibility(uiOptions);}
屏幕适配视频
屏幕适配android相关推荐
- android 特殊屏幕适配,Android屏幕适配(2)常见:第一种
前言: Android屏幕适配(1)基础知识篇 Android屏幕适配(3)常见:第二种 Android屏幕适配(4)常见:第三种 Android屏幕适配(5)常见:归纳总结 常见的屏幕配置问题(一些 ...
- android做好屏幕适配,android屏幕适配
Android一些尺寸单位的基础概念描述 屏幕尺寸:单位英寸,屏幕对角线的物理尺寸. dp:官方是根据320480为基准指定dp值,即dpi160下,1dp=1px,在dpi320下即分辨率72010 ...
- 面试时Android屏幕适配,Android—屏幕适配(面试技巧)
1.明白如下几个概念: 屏幕尺寸,屏幕分辨率以及屏幕像素密度. <1>屏幕尺寸:指的是屏幕对角线的长度.以手机为例,常见的有4.2.5.0.5.5等.. <2>屏幕分辨率:指横 ...
- android小米刘海屏幕适配,Android、iPhone手机刘海屏适配判断
一.简介 手机屏幕的正上方居中位置(下图黑色区域)会被挖掉一个孔,屏幕被挖掉的区域无法正常显示内容,这种类型的屏幕就是刘海屏,也有其他叫法:挖孔屏.凹凸屏等等 二.Android刘海屏适配判断 1.判 ...
- Android 屏幕尺寸、屏幕分辨率(px)、屏幕像素密度(dpi)、密度无关像素(dp/dip)、屏幕适配
1. dp , dpi , px 关系 (假设已经熟悉了基本概念,也可以参考最后的链接) 2. 运行时dp 如何转换成 px 3. 使用dp 和 px 设计结果比较 参考: Android屏幕适 ...
- Android学习屏幕适配技能包
屏幕适配 序言 相关重要概念 硬件 屏幕尺寸 像素密度ppi 分辨率 软件 密度 像素密度dpi 密度限定符 密度无关像素 比例无关像素 屏幕适配的原因 解决方案 今日头条适配方案 宽高限定符适配方案 ...
- android开发根据分辨率设置高度,最详细的Android屏幕适配方案分析
为什么要屏幕适配 Android开发过程中我们常用的尺寸单位有px.dp,还有一种sp一般是用于字体的大小.但是因为px是像素单位,比方我们通常说的手机分辨例如1920*1080都是px的单位.现在A ...
- Andoid屏幕适配终极手段(小编用过最得劲的dp适配)
github_DPScreenAdaptation APKdemo 文章目录 小编尝试过2种屏幕适配方法: 1.PX适配 2.DP适配由来 **3.DP适配原理以及具体操作** 4.欣赏DP适配案例 ...
- Android屏幕适配框架-(今日头条终极适配方案)
2019独角兽企业重金招聘Python工程师标准>>> 在Android开发中,屏幕适配是一个非常头痛的问题,因而为了去进行屏幕适配,作为程序员,是呕心沥血,历经磨难,哈哈 我们之前 ...
最新文章
- 使用多尺度空间注意力的语义分割方法
- 软件测试理论你知道多少?
- python 数据分析学什么-利用Python做数据分析 需要学习哪些知识
- 不同品牌发电机组间的并机知识
- github mysql 数据恢复_记一次MySQL删库的数据恢复
- Linux基础-查看文件与目录
- SQLite与Sql Server的语法差异(转载)
- labelImg 工具
- 使用“管道”与“应用程序生命周期”重构:可插拔模块
- NHibernate的缓存管理机制
- 数据库--MyBatis的(insert,update,delete)三种批量操作
- H264--H264编码--4
- js ide WebStorm 使用总结
- vs2017结合qt开发,vs报错找不到库(解决方案)
- 小众却非常好用的文件同步备份工具-FileYee
- jdk10和jdk8共存和快速切换
- 编写myqq即时聊天脚本,实现相互通信(UDP)
- 计算机相关的外文参考文献,计算机英文参考文献
- java mongo 条件查询_Java mongodb复杂多条件查询
- 校验集装箱号;java校验集装箱号并附解析
热门文章
- 单条视频播放近4000w,如何利用“跟风效应”实现流量暴增?
- 2019 GDD breaking world‘s record of π
- 什么是ChinaNet,ChinaNet介绍
- 基于JAVA的葫芦娃 — 最终之战
- 内存,RAM,ROM,Cache的区别与联系
- 贪心算法:860.柠檬水找零
- mikrotik 设置
- IE设置允许活动内容在我的计算机上的文件中运行
- 信息安全 - uboot, TEE, ATF, trustzone, SHE,HSM, HIS, Evita, ISO 21434, CC认证(Common Criteria)
- 博主有喜:拿了金奖和最佳创新奖