Android 屏幕适配问题分析
一、屏幕分辨率、大小及相关单位介绍
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 屏幕适配问题分析的更多相关文章
- Android 屏幕适配(一)百分比布局库(percent-support-lib) 解析与扩展
转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/46695347: 本文出自:[张鸿洋的博客] 一.概述 周末游戏打得过猛,于是周 ...
- (转)android屏幕适配
声明:eoe文章著作权属于作者,受法律保护,转载时请务必以超链接形式附带如下信息 原文作者: zhuangyujia 原文地址: http://my.eoe.cn/zhuangyujia/archiv ...
- Android 屏幕适配方案
转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/45460089: 本文出自:[张鸿洋的博客] 1.概述 大家在Android开发 ...
- 实用Android 屏幕适配方案分享
转载地址:http://blog.csdn.net/gao_chun/article/details/45645051 真正可用,并且简单易行,可以在多个屏幕大小和屏幕密度上有良好表现的Android ...
- Android屏幕适配和方案【整理】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这里只是根据参考资料整理下,具体内容请阅读参考资料. 原型设计图 推荐1倍效果图,即采用 720 * 360 大小( 1280 *7 ...
- Android屏幕适配全攻略 (转载)
http://blog.csdn.net/jdsjlzx/article/details/45891551 https://github.com/hongyangAndroid/AndroidAuto ...
- 【收藏】Android屏幕适配全攻略(最权威的Google官方适配指导)
来源:http://blog.csdn.net/zhaokaiqiang1992 更多:Android AutoLayout全新的适配方式, 堪称适配终结者 Android的屏幕适配一直以来都在折磨着 ...
- Android屏幕适配全攻略(最权威的官方适配指导)(转),共大家分享。
Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习 ...
- Android屏幕适配全攻略(最权威的官方适配指导) (转)
招聘信息: Cocos2d-X 前端主程 [新浪微博]手机客户端iOS研发工程师 20k-40k iOS 开发工程师 iOS高级开发工程师(中国排名第一的企业级移动互联网云计算公司 和创科技 红圈营销 ...
随机推荐
- Ubuntu 进入、退出命令行的快捷键
进入: Ctrl+Alt+F1 退出: Ctrl+Alt+F7(或者 Alt+F7) 进入命令行窗口:Ctrl+Alt+T
- 手机app数据的爬取之mitmproxy安装教程
mitmproxy是一个支持HTTP和HTTPS的抓包程序,类似Fiddler.Charles的功能,只不过它通过控制台的形式操作. 此外,mitmproxy还有两个关联组件,一个是mitmdump, ...
- servlet在地址栏填写参数
单个参数:以"?"开头+参数名+"="符号+参数值 例如 https://i.cnblogs.com/EditPosts.aspx?opt=1 多个参数:以&q ...
- mysql数据类型(三)
MySQL 数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 数值类型 MySQL支持所有标准S ...
- Python_lambda简单函数表达式
lambda表达式只能用于简单函数的书写 def funx(a): a+=1 return a print(funx(99)) 用lambda实现上面函数: funx = lambda a: a+1 ...
- Flink的流处理--KeyBy
逻辑上将一个流分成不相交的分区,每个分区包含相同键的元素.在内部,这是通过散列分区来实现的 object Keyby { def main(args: Array[String]): Unit = { ...
- Codeforces 666E E - Forensic Examination SA + 莫队 + 线段树
E - Forensic Examination 我也不知道为什么这个复杂度能过, 而且跑得还挺快, 数据比较水? 在sa上二分出上下界, 然后莫队 + 线段树维护区间众数. #include< ...
- NOIP2017提高组Day2T2 宝藏 洛谷P3959 状压dp
原文链接https://www.cnblogs.com/zhouzhendong/p/9261079.html 题目传送门 - 洛谷P3959 题目传送门 - Vijos P2032 题意 给定一个 ...
- BZOJ2553 [BeiJing2011]禁忌 AC自动机 矩阵
原文链接http://www.cnblogs.com/zhouzhendong/p/8196279.html 题目传送门 - BZOJ2553 题意概括 引用一下lych大佬的: 在字母只有前alph ...
- BZOJ1823 [JSOI2010]满汉全席 2-sat
原文链接http://www.cnblogs.com/zhouzhendong/p/8125944.html 题目传送门 - BZOJ1823 题意概括 有n道菜,分别可以做成满式和汉式(每道菜只能做 ...