为什么80%的码农都做不了架构师?>>>   

Android的碎片化设备状况,使得其API必须在不同的屏幕中选取合适的算法并展示,而在API级别上,的确也是有类似的定义,当然,我也终于明白,这是Android的显示效果始终跟不上苹果的原因

苹果的封闭统一了其标准,在4s之前,根本没必要有存在这个函数,即使是到了5,整个界面根本在像素级别上没有什么变化,只是增加了一行的icon而已。

关于Android的nodpi,xhdpi,hdpi,mdpi,ldpi

首先是几个基本概念:
1.屏幕尺寸Screen size
即显示屏幕的实际大小,按照屏幕的对角线进行测量。
为简单起见,Android把所有的屏幕大小分为四种尺寸:小,普通,大,超大(分别对应:small, normal, large, and extra large).
应用程序可以为这四种尺寸分别提供不同的自定义屏幕布局-平台将根据屏幕实际尺寸选择对应布局进行渲染,这种选择对于程序侧是透明的。

2.屏幕长宽比Aspect ratio
长宽比是屏幕的物理宽度与物理高度的比例关系。应用程序可以通过使用限定的资源来为指定的长宽比提供屏幕布局资源。
3.屏幕分辨率Resolution
在屏幕上显示的物理像素总和。需要注意的是:尽管分辨率通常用宽x高表示,但分辨率并不意味着具体的屏幕长宽比。
在Andorid系统中,应用程序不直接使用分辨率。

4.密度Density
根据像素分辨率,在屏幕指定物理宽高范围内能显示的像素数量。
在同样的宽高区域,低密度的显示屏能显示的像素较少,而高密度的显示屏则能显示更多的像素。
屏幕密度非常重要,因为其它条件不变的情况下,一共宽高固定的UI组件(比如一个按钮)在在低密度的显示屏上显得很大, 而在高密度显示屏上看起来就很小。
为简单起见,Android把所有的屏幕分辨率也分为四种尺寸:小,普通,大,超大(分别对应:small, normal, large, and extra large).
应用程序可以为这四种尺寸分别提供不同的资源-平台将透明的对资源进行缩放以适配指定的屏幕分辨率。

5.设备独立像素Density-independent pixel (dp)
应用程序可以用来定义UI组件的虚拟像素单元,通过密度无关的方式来描述布局尺寸和位置。
一个设备独立像素相当于一个160 dpi屏幕上的物理像素。
在程序运行时,系统根据屏幕的实际密度透明的处理任何需要缩放的设备独立像素单元,设备独立像素转换成屏幕实际像素的换算很简单:pixels = dps * (density / 160).
例如在240 dpi的屏幕上,1个设备独立像素等于1.5物理像素.为确保UI组件在不同的屏幕都能合适的展示,强烈建议使用设备独立像素单元来定义你的应用程序UI。

四种屏幕尺寸分类:: small, normal, large, and xlarge
四种密度分类: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high)
需要注意的是: xhdpi是从 Android 2.2 (API Level 8)才开始增加的分类.
xlarge是从Android 2.3 (API Level 9)才开始增加的分类.
DPI是“dot per inch”的缩写,每英寸像素数。

一般情况下的普通屏幕:ldpi是120,mdpi是160,hdpi是240,xhdpi是320。

参考:http://developer.android.com/images/screens_support/screens-ranges.png

两种获取屏幕分辨率信息的方法:

DisplayMetrics metrics = new DisplayMetrics();
Display display = activity.getWindowManager().getDefaultDisplay();
display.getMetrics(metrics);
//这里得到的像素值是设备独立像素dp

//DisplayMetrics metrics=activity.getResources().getDisplayMetrics(); 这样获得的参数信息不正确,不要使用这种方式。
不能使用android.content.res.Resources.getSystem().getDisplayMetrics()。这个得到的宽和高是空的。
如果需要为Android pad定制资源文件,则res目录下的目录可能为:
drawable
drawable-ldpi
drawable-mdpi
drawable-hdpi
drawable-xhdpi
drawable-nodpi
drawable-nodpi-1024×600
drawable-nodpi-1280×800
drawable-nodpi-800×480
values
values-ldpi
values-mdpi
values-hdpi
values-xhdpi
values-nodpi
values-nodpi-1024×600
values-nodpi-1280×800
values-nodpi-800×480

参考:

http://developer.android.com/guide/practices/screens_support.html

转载于:https://my.oschina.net/ranko/blog/115411

【初印象】Android手机屏幕适配API:nodpi,xhdpi,hdpi,mdpi,ldpi相关推荐

  1. mdpi的手机_【初印象】Android手机屏幕适配API:nodpi,xhdpi,hdpi,mdpi,ldpi

    Android的碎片化设备状况,使得其API必须在不同的屏幕中选取合适的算法并展示,而在API级别上,的确也是有类似的定义,当然,我也终于明白,这是Android的显示效果始终跟不上苹果的原因 苹果的 ...

  2. Android开发——Android手机屏幕适配方案总结

    0. 前言 Android的屏幕适配,即使得某一元素在Android不同尺寸.不同分辨率的手机上具备相同的显示效果,这个问题一直以来都是我们Android开发者不得不面对的问题.本文参考了很多前人的博 ...

  3. android手机屏幕适配理论知识

    对于具有相同像素密度的设备来说,像素越高,尺寸就越大,所以可以换个思路,讲问题从单纯的尺寸大小转换到像素大小和像素密度的角度来 占比最高的是480*800,320*480的设备竟然也占据了很大比例,但 ...

  4. Android手机屏幕适配

    Android机型尺寸各种各样,于是屏幕适配就成了Android开发中很重要的一环.Android屏幕适配可能一些开发者都会遇到这样的问题,今天就来分享下屏幕适配,其实Android屏幕适配也可以很简 ...

  5. Android手机屏幕适配知识整理

    目录 关于单位 关于屏幕密度 res包下的包命名 关于单位 概念: [px]pixels,像素 [sp]scaled pixels,缩放像素 [dp/dip]device independent pi ...

  6. Android多屏幕适配-手机

    1.常用单位及其关系 px:像素 inch:英寸 pt:1/72 英寸 dpi:一英寸长的直线上的像素点的数量,即像素密度.不同的设备,dpi值不同,显示效果不同,dpi的值跟设备硬件有关.标准值是1 ...

  7. 老李分享:android手机测试之适配(1)

    老李分享:android手机测试之适配(1) Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念 ...

  8. Android的屏幕适配

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

  9. Android开发屏幕适配全攻略

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

最新文章

  1. 用户空间与内核空间数据交换的方式(9)------netlink【转】
  2. 经典设计模式——策略模式
  3. Visual studio docker build no such file or directory
  4. 飞翔的圆(Flappy Bird)游戏源码完整版
  5. 服务器常用的状态码及其对应的含义
  6. 海康相机IP搜索协议研究
  7. 华为模拟器ENSP下载与安装详细教程(win10 LTSC系统中安装)
  8. IP是什么?动态IP和静态IP有什么区别?
  9. 新颖的自我介绍_新颖的自我介绍6篇
  10. 锁的等级:方法锁、对象锁、类锁。
  11. 移动硬盘或U盘无法安全弹出怎么快速安全弹出?
  12. Spring ldap ODM
  13. 阿里云服务器可以做什么?阿里云服务器十大应用场景
  14. 深入讨论Python中的序列切片语法
  15. 基于Android地图的共享单车骑行系统
  16. 墨翟科技(上海)有限公司
  17. linux升级内核后vnc显示没有桌面,Intel NUC(NUC6i3SYH)在不接显示器的情况下VNC不显示桌面(Ubuntu 18.04)...
  18. 手机高速访问an web方法
  19. 【.NET学习】.NET入门及学习路线
  20. stm32+esp8266 GET请求心知天气的简单方法

热门文章

  1. sh执行文件 参数传递_sh 脚本执行sql文件传参数
  2. php在html中生成option,php-如何为使用laravel表单生成器创建的select标签的选项指定HTML属性?...
  3. 树莓派3 kali linux很卡,树莓派3装kali Linux 成功写入 但是点不亮 为什么?
  4. java nio.2群发_JAVA NIO TCP SOCKET 聊天群发
  5. Flask设置、获取、删除cookies
  6. git:如何让不同开发者提交在同一条直线上
  7. 机械之家再获3000万A+轮投资,58产业基金领投
  8. 高性能实践IO之Reactor模式
  9. python while循环和双重循环
  10. python中range什么意思_python里range什么意思