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

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. Vue-CLI 3.x 设置反向代理

    最近在项目中使用了Vue CLI 3.0版本,项目中需要设置反向代理解决跨域问题,下面记录一下设置过程. 新建配置文件 (vue-cli3.x 官网的配置文档 https://cli.vuejs.or ...

  2. vue指令问题

    挂载点:最外层标签就是vue实例的挂载点,即id或者类对应的 dom节点 模板:指挂载点内部的内容,在实例里使用template标签来构 建 h1标签放在body里面不使用 “template”是一样 ...

  3. bootstrap的模拟单选按钮

    <div class="btn-group" data-toggle="buttons" id="radio"> <lab ...

  4. C++ 成员初始化列表

    1.什么是成员初始化列表 #include<iostream> #include<string> using namespace std; class Weapon { pri ...

  5. 关于sql和MySQL的语句执行顺序

    sql和mysql执行顺序,发现内部机制是一样的.最大区别是在别名的引用上. 一.sql执行顺序 (1) from (3) join (2) on (4) where (5) group by(开始使 ...

  6. 【bzoj1264】[AHOI2006]基因匹配Match 树状数组

    题解: 一道比较简单的题目 容易发现状态数只有5*n个 而转移需要满足i1<i2;j1<j2 那么很明显是二维平面数点 暴力一点就是二维树状数组+map 5nlog^3 比较卡常 但是注意 ...

  7. linux 锁定重要文件 更改重要命令

    锁定重要文件如下: chattr +i /etc/passwd /etc/shadow /etc/groupp /etc/gshadow 解锁文件 chattr -i /etc/passwd /etc ...

  8. 支付宝 app支付 沙盘使用

    文档说明 沙箱测试: App支付沙箱接入注意点 1.app支付支持沙箱接入:在沙箱调通接口后,必须在线上进行测试与验收,所有返回码及业务逻辑以线上为准:2.app支付只支持余额支付,不支持银行卡.余额 ...

  9. Django项目和Django初体验和创建、目录结构认识

    .MVC的设计方式(跟Flask一样,都是MVC的设计模式) .开发效率高 .功能强大(丰富的第三方组件) .安全性高(帮助开发者规避安全漏洞) 目前市面上使用:Django>Flask #使用 ...

  10. Java基础总结01:JDK与JRE概述

    1)JRE(Java Runtime Environment,Java运行时环境) 包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一 ...