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高级开发工程师(中国排名第一的企业级移动互联网云计算公司 和创科技 红圈营销 ...
随机推荐
- C++ shut down a computer
前阵子有朋友问我,怎么用C语言写一个小程序,控制电脑关机.这个我真的不懂,这几天闲着,就上网搜了搜,整理一下. IDE: Code::Blocks 16.01 操作系统:Windows 7 x64 # ...
- 安装Mycat 曾经踩的那些坑
1. INFO | jvm | ----/--/-- --:--:-- | Caused by: io.mycat.config.util.ConfigException: schema TEST d ...
- axios 发送json数据
var qs = require('qs'); axios.post(ajaxurl,qs.stringify({ username:'zhangsan', age:'18' })).then(fun ...
- 步步为营-75-Cookie简介
说明:cookie常用于数据保存 1 使用 //创建cookie Response.cookies["yk"].value ="xyxtl"; //设置过期时间 ...
- IDEA加载项目的设置是tomcat
- gulp构建自动化项目
'use strict'; var gulp = require('gulp'), browserSync = require('browser-sync').create(), SSI = requ ...
- 阻止Java反编译蛋疼方法
public class landv { private static String companyName="landv测试"; public static void main( ...
- win10下右键菜单添加“打开cmd”
早期版本的win10是可以在文件夹的左上角打开cmd的,更新后发现现在只有powershell能用了.这不方便. 通过修改注册表,可以实现这个功能. 具体做法:新建一个.reg文件win10_add_ ...
- 通过安装memadmin对memcache进行可视化管理
https://blog.csdn.net/reblue520/article/details/70792891
- WPF中datagrid不显示滚动条问题
WPF中DataGrid是自带滚动条的,当内容显示不下时可以使用滚动条显示.但是,开发中遇到了DataGrid一直不显示滚动条.之前也曾遇到过同类问题,再次经过查找,发现是StackPanel的原因, ...