屏幕适配

首先理解下各个尺寸单位代表的意思

  • 尺寸含义

    1. px: 像素
    2. dip: Density-independent pixel 独立像素密度
    3. dpi: dot per inch 分辨率
    4. ppi: pixel per inch 指每英寸所拥有的像素

      ppi计算:(宽度的平方 + 高度的平方)开根号 / 对角线的长度
    5. Density: density值表示每英寸有多少个显示点,与分辨率是两个概念

      density计算:dpi / 160 密度值

各个单位之间的互换

  • 公式: dp = px / (dpi / 160) px = dp * (dpi / 160) dp = px / denisity or dp = px / (dpi / 160)

    • dpi: 是厂商定义的常量值 = 根据勾股定理开根除4

      ldpi: dpi 120 –> 240 * 320

      mdpi: dpi 160 –> 320 * 480

      hdpi: dpi 240 –> 480 * 800

      xhdpi: dpi 320 –> 720 * 1080 如:(720*720+1080*1080)开根号 除 4 = 320dpi

      xxhdpi:dpi 380 –>1080p 1920*1080 高清
    • px :手机像素 = dp * (dpi / 160)

      ldpi: 120px–> dp = 120 / (120 / 160) = 160dp

      mdpi: 160px–> dp = 160 /(160/160) = 160dp

      hdpi: 240px–> dp = 240 /(240/160) = 160dp

      xhdpi:360px–> dp = 360 / (320/160)= 180dp

    • densityDip:值表示每英寸有多少个显示点 = px / denisity

      QVGA: density=0.75 densityDpi=120 QVGA(240*320)

      HVGA:density=1.0 densityDpi=160 HVGA(320*480)

      VGA:density=1.0 densityDpi=160 VGA(480*640)

      WVGA:density = 1.5 densityDpi=240 WVGA(480*800)

      WQVGA:density=2.0 densityDpi=120 WQVGA(240*400)

      而当densityDip=160时,1dp=1px。

设计资源紧张怎么办?

在现在的App开发中,基本都会有iOS和Android版本,有些公司为了保持App不同版本的体验交互一致,还有些公司的设计资源可能比较紧张,这些情况下iOS和Android版本基本是一个设计师主导,而大多数情况下设计师可能更会以iPhone手机为基础进行设计,包括后期的切图之类的。这个时候身为Android开发人员你是否还要求设计师单独为Android端切一套图片资源呢?这会让你们的设计师崩溃的,下面就来告诉一个项目中总结的更棒的方法。

出一套图,有人肯定会觉得使用最新的iPhone6(6s和6的尺寸以及分辨率都一样)来做原型设计,而iPhone6的屏幕分辨率为1334×750, 屏幕尺寸为4英寸,根据勾股定理(a^2 + b^2 = c^2)1334^2+750^2, 然后再对其开根号可求出屏幕对角线的分辨率为:1530,除以4可得出iphone6的dpi:1530/4≈382 可以看出iPhone5的屏幕的dpi约等于380, 刚好属于xhdpi,但是好的产品一般是以用户群体来作标准的,不是所有人都用得起i6,用得起6p这些高清屏手机;

目前我们公司是以iPhone5(5s和5的尺寸以及分辨率都一样)来做原型设计,而iPhone5的屏幕分辨率为640X1164, 屏幕尺寸为4英寸,根据勾股定理算出iPhone5分辨率为:1328,dpi为:320, 刚好属于xhdpi; 并且xhdp在xxhdpi上的显示效果也相差不多;

xhdpi是目前最大市场

一般情况下只需要提供一套大的dpi的图片就ok了,现在市面手机分辨率最大可达到1080X1920的分辨率,如Nexus6p,2560×1440,dpi更是高于xxhdpi,但是毕竟还没普及,目前市面上最普遍的高端机的分辨率还多集中在720X1080范围,也就是多集中在xhdpi,所以目前来看xhpdi规格的图片成为了首选。当然随着技术规格的提高以后发展,以后可能市场上xxdpi的手机会越来越普遍,但这是后话。

  • .因此得出结果

    出图:效果图(主要就1套)

    xhdpi: 720 * 1280

图片的简单适配

  • 布局适配

    不同的手机的图片放到 对应的分辨率的目录下drawable-xxxx

    在layout的后面添加xxx,添加的布局名称要要一致

    ldpi: dpi 120 –> 240 * 320

    mdpi: dpi 160 –> 320 * 480

    hdpi: dpi 240 –> 480 * 800

    xhdpi: dpi 320 –> 720 * 1080

  • 动态的布局适配

    一般屏幕适配也有通过margin或者权重来去做屏幕的适配

android 屏幕适配,hdpi,xhdpi,xxhdpi理解,常见出图的更多相关文章

  1. 【原】android【手机】屏幕适配解决方案,完美适配适配hdpi,xhdpi,xxhdpi的做法。

    1.先说要怎么做,后面在慢慢讲解: 2.现在来讲解为什么要放这三套: 这三套其实按内容来说就两种,为什么这两种可以适配hdpi,xhdpi,xxhdpi呢? 那么两种类型的dimens就可以了,为什么 ...

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

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

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

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

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

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

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

    原文网址:http://blog.csdn.net/jdsjlzx/article/details/45891551 Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的 ...

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

    转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入 ...

  7. android屏幕适配详解

    android屏幕适配详解 官方地址:http://developer.android.com/guide/practices/screens_support.html 一.关于布局适配建议 1.不要 ...

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

    摘自:http://www.cocoachina.com/android/20151030/13971.html Android屏幕适配出现的原因 在我们学习如何进行屏幕适配之前,我们需要先了解下为什 ...

  9. Android 屏幕适配:最全面的解决方案

    转自:https://www.jianshu.com/p/ec5a1a30694b 前言 Android的屏幕适配一直以来都在折磨着我们Android开发者,本文将结合: Google的官方权威适配文 ...

随机推荐

  1. 高端技巧:如何使用#define定义变量

    Introduction 想在源文件中定义一个跟行号有关的变量,每次都手动输入实在是太慢了,本文介绍如何使用宏定义来定义与行号有关的变量. 例如:我们想在源代码的第10行定义A_10这样的一个整形变量 ...

  2. java 随机数高效生成

    分享牛,分享牛原创.近期去面试经常被问到java如何生产随机数,以及生成很大的字符串保证不能重复,还要考虑性能,之前本人面试别人的时候,可能不会问这个问题.既然这个java随机数问题经常被问到,那咱们 ...

  3. springMVC源码分析--ControllerBeanNameHandlerMapping(八)

    在上一篇博客springMVC源码分析--AbstractControllerUrlHandlerMapping(六)中我们介绍到AbstractControllerUrlHandlerMapping ...

  4. iter 函数另类用法

    它可以很简单地构造一个无限迭代器: ): print(i) #将无限打印出0 原来,如果iter有第二个参数,那么第一个参数必须是一个参数可以省略的可调用对象.int函数符合这种要求. 迭代什么时候停 ...

  5. 使用shell操作HDFS

    前提是都已经配置好了,可以参考hadoop伪分布安装:http://blog.csdn.net/jerome_s/article/details/25788967 linux的文件系统与hdfs的关系 ...

  6. hive元数据库表分析及操作

    在安装Hive时,需要在hive-site.xml文件中配置元数据相关信息.与传统关系型数据库不同的是,hive表中的数据都是保存的HDFS上,也就是说hive中的数据库.表.分区等都可以在HDFS找 ...

  7. 第一行代码阅读笔记---AndroidMainfest.xml分析

    按照这本书的指引,我随作者一样创建了一个安卓应用,开始了安卓开发的启程. 找到AndroidMainfest.xml这个文件,打开后看到了我创建的Activity在这个文件里被成功注册,文件内容如下: ...

  8. Nhibernate系列学习之(一) ORM and Nhibernate入门实例解析

    最近框架项目需要,数据层想使用Nhibernate,代替传统的sql语句的写法,更加使用面向对象的思维来维护实体与数据库的这层关系映射(ORM),好在之前接触过Java时学习使用了Hibernate, ...

  9. [ExtJS5学习笔记]第四节 欢迎来到extjs5-手把手教你实现你的第一个应用

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/38331347 本文作者:sushengmiyan ------------------ ...

  10. SSH深度历险(十一) AOP原理及相关概念学习+xml配置实例(对比注解方式的优缺点)

    接上一篇 SSH深度历险(十) AOP原理及相关概念学习+AspectJ注解方式配置spring AOP,本篇我们主要是来学习使用配置XML实现AOP 本文采用强制的CGLB代理方式 Security ...