1. 手机屏幕要素

手机:  M2

分辨率:1080X1920 (手机宽度和长度的像素数)

屏幕尺寸:手机屏幕对角线长度  8寸

屏幕密度:dpi  屏幕每英寸的像素数

计算公式:(1080平方+1920平方)再开平方/8寸 = 275.36 dpi

density :  密度()

android中规定 160px/英寸,就是每英寸为160px;    意味着160dpi屏幕密度: 1dp = 1px

所以此手机的密度为:  275.36dpi/160= 1.72 倍;  意味着160dpi屏幕密度: 1dp = 1.72px

综上所述:当我们android开发者需要做适配时,可以获取分辨率和屏幕尺寸计算出屏幕密度,再计算出密度(即当前手机的1dp=XXpx),再根据UI给的px尺寸去给出dp值; 当UI标注高为30px时,我们用30/1.72;

getResources().getDisplayMetrics().densityDpi 就是屏幕密度。
  getResources().getDisplayMetrics().density 就是密度, 也可以理解为1dip相当于多少个px啦。

2. 图片尺寸的适配

上述1中获取的是屏幕真实的密度,下列是系统标准密度,不可能针对每个真实密度去做一套配图,所以以系统标准密度为准,去作图适配;特殊的尺寸时,再做特殊适配;

屏幕密度              标准                密度                分辨率

120 dpi、             ldpi               0.75倍              240X320

160 dpi(基准)  mdpi             1倍                   320X480

240 dpi                hdpi              1.5倍               480X800

320 dpi                xhdpi             2倍                  720X1280

480dpi                 xxhdpi           3倍                  1080X1920

建议在xhdpi中作图(或者xxhdpi也可以),鉴于apk的大小,一般在xhdpi中放入图片就可以,计算的简单,就是1dp=2px啊,放进drawable-xhdpi的资源文件夹中。 图片的大小就通过dp去控制,这样就可以适配各种手机了;

3.屏幕的宽高差异

分辨率                      320X480                 480X800                720X1280与1080X1920

屏幕宽度                      320dp                    320dp                                360dp

屏幕宽高比                    2:3                         3:5                                    9:16

如果想消除这些比例差异,可以通过添加布局文件来实现。一般情况下,布局文件放在layout文件夹中,如果要单独对360dp的屏幕进行调整,你可以单做做一个布局文件放在layout-w360dp中;如果你想对某个特殊的分辨率进行调整,那么你可以将布局文件放在标有分辨率的文件夹中,如 layout-854×480。

android Mainfest中添加,支持大屏比差;做华为mate9的适配时,图片和UI匹配不上,最后发现是屏幕宽高比原因:
<meta-data android:name="android.max_aspect" android:value="2.1"/>

Android的屏幕适配一直以来都在折磨着我们Android开发者,越来越多的手机厂商趋向于全面屏设计,比如今年出厂的 18.5:9 屏幕比例的三星 Galaxy S8 手机,前两天刚发布 18:9 屏幕比例的 OnePlus 5T 手机, 屏幕比例均超过过去常见的 16:9 比例。超大屏幕比例的设计对于 Android App 来说,存在一个屏幕适配的问题。

我们需要在 Manifest 清单文件中定义一个更大值的 android.max_aspect 属性,保证我们的 App 能够充分利用多余的屏幕空间。

注意:如果你没有使用 meta-data 标签设置 max_aspect 属性,同时 android:resizeableActivity 属性值为 true 的话,App 默认使用的最大 aspect 默认值为 1.8(大约 16:9 的样子)。max_aspect 属性表示 App 能够支持的最大屏幕比例,官方建议我们将该值设置为 2.1 或者更高的值。

       备注: resizeableActivity 属性在 targetSDKVersion 小于 24 的应用中值为 false,其他为 true。

4.几个资源的文件夹
          在720×1280中做了图片,要让开发人员放到drawable-xhdpi的资源文件夹中,这样才可以显示正确。个人认为仅提供一套素材就可以 了,可以测试一下应用在低端手机上运行是否流畅,如果比较卡顿,可以根据需要提供部分mdpi的图片素材,因为xhdpi中的图片运行在mdpi的手机上 会比较占内存。
以应用图标为例,xhdpi中的图标大小是96px,如果要单独给mdpi提供图标,那么这个图标大小是48px,放到drawable-mdpi 的资源文件夹中。各个资源文件夹中的图片尺寸同样符合ldpi:mdpi:hdpi:xhdpi:xxhdpi=3:4:6:8:12的规律。

如果你把一个高2px的分割线素材做成了9.png图片,你想让细线在不同密度中都是2px,而不被安卓根据密度进行缩放,怎么办?你可以把这个分 割线素材放到drawable-nodpi中,这个资源文件夹中的图片,将按照实际像素大小进行显示,而不会被安卓根据密度进行缩放。即在mdpi中细线 是2px(2dp),在xhdpi中细线是2px(1dp)。

5.屏幕适配命名

layout

layout-land

layout-port

values-port-xhdpi

drawable-land-xxhdpi

values-sw600dp

6.注: 计算出实际的dpi屏幕像素,做android的屏幕适配还是要匹配android官方标准的dp去适配的,

例:计算出的实际dpi为401dpi,我们在android适配时以以上标准为基础,就是xxhdpi, 3倍的,1dp=3px去做屏幕适配

android 屏幕适配理解相关推荐

  1. 鸿洋android屏幕适配四部曲-传送门

    鸿洋android屏幕适配四部曲-传送门 两分钟理解Android中PX.DP.SP的区别 https://blog.csdn.net/donkor_/article/details/77680042 ...

  2. Android 屏幕适配

    一.适配方式之dp 名词解释 分辨率:480*800,1280*720.表示物理屏幕区域内像素点的总和.(切记:跟屏幕适配没有任何关系) 因为我们既可以把1280*720 的分辨率做到4.0 的手机上 ...

  3. android屏幕适配详解

    android屏幕适配详解 官方地址:http://developer.android.com/guide/practices/screens_support.html 一.关于布局适配建议 1.不要 ...

  4. Android屏幕适配全攻略(最权威的官方适配指导)(转),共大家分享。

    Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习 ...

  5. Android屏幕适配全攻略(最权威的官方适配指导) (转)

    招聘信息: Cocos2d-X 前端主程 [新浪微博]手机客户端iOS研发工程师 20k-40k iOS 开发工程师 iOS高级开发工程师(中国排名第一的企业级移动互联网云计算公司 和创科技 红圈营销 ...

  6. 【收藏】Android屏幕适配全攻略(最权威的Google官方适配指导)

    来源:http://blog.csdn.net/zhaokaiqiang1992 更多:Android AutoLayout全新的适配方式, 堪称适配终结者 Android的屏幕适配一直以来都在折磨着 ...

  7. Android 系统(186)---最易懂的Android屏幕适配解决方案--总结版

    最易懂的Android屏幕适配解决方案--总结版 本文参考自: Google的官方权威适配文档 郭霖:Android官方提供的支持不同屏幕大小的全部方法 Stormzhang:Android 屏幕适配 ...

  8. 2021年最详细的Android屏幕适配方案汇总

    1 Android屏幕适配的度量单位和相关概念 建议在阅读本文章之前,可以先阅读快乐李同学写的文章<Android屏幕适配的度量单位和相关概念>,这篇文章包含了阅读本文的一些基础知识,推荐 ...

  9. Android屏幕适配全方位解析与指导

    Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习 ...

最新文章

  1. 怎么用python统计字数_使用Python 统计高频字数的方法
  2. 多线程编程 之 (生产者与消费者(N多))同步常用的方法。
  3. Java 强、弱、软、虚,你属于哪一种?
  4. html获取鼠标按键数,鼠标在IE、Firefox和Opera点击键所对应的数字代码
  5. python --- opencv部分学习
  6. DeepLearning.ai 提炼笔记(5-1)-- 循环神经网络
  7. Android屏幕旋转时Activity不重新调用onCreate的方法
  8. 对眼睛有利的屏幕颜色
  9. nginx ngx_http_upstream_module
  10. 用C#实现屏幕键盘!
  11. vue.js 带有正则选择的车牌控件组件
  12. 天蝎项目整机柜服务器解决方案,天蝎2.0整机柜服务器技术规范rev0.5(final).doc
  13. SpringMVC 学谈 (第四章)
  14. 深度学习之DCN-v2
  15. 目标检测1——SAR影像舰船数据集
  16. Linux实战技巧--文件系统操作(一)--文件查看(pwd/ls/cd)
  17. python-笔记(四)函数
  18. 顶级人才的逻辑思维是什么
  19. 教你百分百实用监控安装摄像头的方法与技巧
  20. 嗨CE系列教程全套(入门,进阶,高阶)游戏驱动反调试

热门文章

  1. html+css3实现炫酷动画吃豆豆
  2. 真正可以在线上编辑的PDF免费工具
  3. html 图片轮播渐变,jQuery渐变式轮播图(原创)
  4. 计算机毕业设计ssm王者荣耀网页hzagi系统+程序+源码+lw+远程部署
  5. Magic Data入选亿欧智库2022中国语音交互车端应用产业图谱
  6. selenium + Chrome 模拟浏览器爬淘宝信息
  7. 终于被上涨的房价影响到了
  8. python也能轻松实现界面编程
  9. HTML5 canvas 画布
  10. lucene中的PackedInts源码解读(3)-PACKED格式