一、屏幕分辨率、大小及相关单位介绍

Android categorizes device screens using two general properties: size and density.There are four generalized sizes: small, normal, large, xlarge;And four generalized densities: low (ldpi 0.75), medium (mdpi 1.0 baseline), high (hdpi 1.5), extra high (xhdpi 2.0). To declare different layouts and bitmaps you'd like to use for different screens, you must place these alternative resources in separate directories, similar to how you do for different language strings.

This means that if you generate a 200x200 image for xhdpi devices, you should generate the same resource in 150x150 for hdpi, 100x100 for mdpi, and 75x75 for ldpi devices.

屏幕大小,指的是屏幕对角线的长度,通常使用“寸”来度量,如:4.5寸屏幕等等。

分辨率,指屏幕的像素点个数,如:720x1280,指宽有720个像素点,而高有1280个像素点。

PPI,指每英寸像素个数pixels per inch,又被称为DPI(Dots Per Inch),是由对角线的像素点数除以屏幕的大小,由此得到像素密度(或者称为:屏幕密度)。

每个厂商的Android手机具有不同大小尺寸和像素密度的屏幕。Android系统如果要精确到每种DPI的屏幕,那基本上是不可能的。系统定义了几个标准的DPI值,作为手机的固定DPI。

其中包括:密度值(也就是DPI)和屏幕分辨率。

独立像素密度:dp,Android系统使用mdpi即密度值为160的屏幕作为标准,在这种屏幕上1dp=1px,其他屏幕可以通过比例进行换算。(也就是说:1英寸占用160个像素,对应是160px)

密度值为240的屏幕中,1dp=?px

密度值为240,也就是:1英寸是240px,此时相对于160密度值而言,像素直径小。

mdpi:100dp=100px 160dp=160px=1英寸

要实现密度无关像素,也就是1dp的长度和屏幕密度无关,即要实现1dp --> N*px的比例转换关系。

密度值越大,像素直径越小;对应的,1dp获得的px数越多。

mdpi:1dp = 1px --> 160dp = 160px = 1英寸

hdpi:1dp = 1.5px --> 160dp = (1/1.5)*240dp = 240px = 1英寸 --> 1dp = 1.5px

密度值越高的屏幕,显示的效果就越精细。宽是2英寸长是3英寸的手机屏幕,若分辨率是320*480,密度就是160dpi;若分辨率是640*960,则密度就是320dpi。

屏幕密度越大,1dp对应的像素数目越多.

dp:长度单位,与具体屏幕密度无关,显示的时候根据具体平台屏幕密度的不同最终转换为相应的像素长度,具体转换规则是: 1dp = (目标屏幕密度/标准密度)*px,标准密度为160dpi,例如,1dp长度在密度为160dpi的平台表示一个像素的长度,而在240dpi的平台则表示1.5个像素的长度.

参考:

http://www.cnblogs.com/yaozhongxiao/archive/2014/07/14/3842908.html

http://www.jb51.net/article/33238.htm

二、动态加载布局——根据设备大小加载对应布局

特制化res目录,使用上述限定符:small、normal、large、xlarge,为新建的layout目录命名:layout-large...实现动态加载布局的功能。那些屏幕被认定为是:large的,会自动加载large-layout目录中的布局文件。

使用最小宽度限定符对屏幕的宽度指定一个最小值(以dp为单位),以该值作为临界值,小于该值得加载一个布局,其他的加载另一个布局。在res目录下,新建layout-sw600dp目录:当程序运行在屏幕宽度大于600dp的设备上时,会加载layout-sw600dp中的布局文件,若小于时默认加载layout目录中的布局文件。

三、分辨率适配解决方案

http://blog.csdn.net/z343929897/article/details/27337537

http://www.cnblogs.com/maxinliang/p/3170711.html

http://www.cnblogs.com/zealotrouge/archive/2012/11/23/2784774.html

http://www.cnblogs.com/tinyphp/p/4008400.html

Android 屏幕适配问题分析的更多相关文章

  1. Android 屏幕适配(一)百分比布局库(percent-support-lib) 解析与扩展

    转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/46695347: 本文出自:[张鸿洋的博客] 一.概述 周末游戏打得过猛,于是周 ...

  2. (转)android屏幕适配

    声明:eoe文章著作权属于作者,受法律保护,转载时请务必以超链接形式附带如下信息 原文作者: zhuangyujia 原文地址: http://my.eoe.cn/zhuangyujia/archiv ...

  3. Android 屏幕适配方案

    转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/45460089: 本文出自:[张鸿洋的博客] 1.概述 大家在Android开发 ...

  4. 实用Android 屏幕适配方案分享

    转载地址:http://blog.csdn.net/gao_chun/article/details/45645051 真正可用,并且简单易行,可以在多个屏幕大小和屏幕密度上有良好表现的Android ...

  5. Android屏幕适配和方案【整理】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这里只是根据参考资料整理下,具体内容请阅读参考资料. 原型设计图 推荐1倍效果图,即采用 720 * 360 大小( 1280 *7 ...

  6. Android屏幕适配全攻略 (转载)

    http://blog.csdn.net/jdsjlzx/article/details/45891551 https://github.com/hongyangAndroid/AndroidAuto ...

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

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

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

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

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

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

随机推荐

  1. java提取出一个字符串里面的Double类型数字

    String str="hh\n1\n22\n798.809\n0.89\n";         String regex="\\d+(?:\\.\\d+)?" ...

  2. linux+jenkins+jmeter+ant持续集成

    0.安装jdk 1.下载jdk8 登录网址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151 ...

  3. AI-URL注册器

    官方文档地址:https://www.django-rest-framework.org/tutorial/quickstart/#serializers #url生成器生成四个url,就可以访问关于 ...

  4. Mysql 5.7 CentOS 7 安装MHA

    Table of Contents 1. MHA简介 1.1. 功能 1.2. MHA切换逻辑 1.3. 工具 2. 环境 2.1. 软件 2.2. 环境 3. Mysql 主从复制 3.1. Mys ...

  5. mongodb数据中的复制(副本集)

    ---恢复内容开始--- 什么是复制 复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性,并可以保证数据的安全性 复制还允许从硬件故障和服务中断中恢复数据 为什么要复制 数据备 ...

  6. 纯css3实现的switch开关按钮

    效果如图 <p> <label><input class="mui-switch mui-switch-anim" type="checkb ...

  7. 用Photoshop扭曲滤镜工具打造旋转的光束效果

    原文:https://www.w3cschool.cn/photoshopgjjc/dthfn1.html 教程与已往的不同,作者加上了一些新的步骤如锐化等,出来的效果也有所改进.大致过程:先用滤镜制 ...

  8. docker挂载点泄露问题

    本来以为我不会遇到. 结果还是遇到了. 现象为k8s delete pod时,系统一直显示Terminatiing,无论多久都不能正常. 以下两个帖子大概说明了是怎么回事. https://blog. ...

  9. .NET Framework反射总结

    概述 程序集的反射以及动态的创建类对象,是自动化编程常用的到知识原理,比如插件编程.模板设计模式,都可以采用发射机制动态的去创建实例化对象,实现类的动态加载.这里简单总结下,常用到的Framework ...

  10. 一起学Hive——使用MSCK命令修复Hive分区

    最近在使用Hive的过程中,在备份数据时,经常会使用cp或mv命令来拷贝数据,将数据拷贝到我们新建备份表的目录下面,如果不是分区表,则上面的操作之后,新建的备份表可以正常使用,但是如果是分区表的,一般 ...