zoukankan      html  css  js  c++  java
  • android屏幕尺寸 sp,px,dp,density,in介绍

    在进行android长度单位学习之前,先看一下获取android手机屏幕相关数值的代码:

              DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();

     

    1. displayMetrics.density; // density比例,160dpi的为1,240dpi的为1.5(以160dpi为标准,240/160dpi)  
    1. displayMetrics.densityDpi; // 屏幕密度。160dpi,240dpi等  
    1. displayMetrics.scaledDensity; // 字体缩放比例  
    1. displayMetrics.heightPixels; // 高上有多少个像素  

    1. displayMetrics.widthPixels; // 宽上有多少个像素  
    1. displayMetrics.xdpi; // 以dp值来表示的宽  
    1. displayMetrics.ydpi; // 以dp值来表示的高  

    Android的长度单位详解:

    1、dp,sp,px的概念

     dpdip:(与密度无关的像素)这个和设备硬件有关系。为了支持HVGAWVGA,和

       QVGA,是一种基于屏幕密度的抽象单位。设置一些view的宽高可以使用这个。一般情

       况下,在不同分辨率的屏幕上,都不会有缩放的感觉

     sp: 与刻度无关的像素--放大像素,主要是处理字体的大小。

     HVGA: VGA(640*480像素)的一半,分辨率为(480*320像素)3:2的宽高比

     WVGA: Wide VGA,其分辨率为800 * 480像素,是扩大了的VAG(640*800)因为很多网页的宽度

          都是800,所以WGVA能满足网页浏览的要求。

          扩展:WVGA现在已经不再是主流,它被FWVGA854*480),QHD(960*540)及更高的

          1280*720分辨率所取代。

     QVGA: 即“quarter VGA”,顾名思义,即VGA的四分之一尺寸,亦即在液晶屏幕(LCD

          上输出的分辨率为(240*320像素)

      in: 表示英寸,是屏幕的物理尺寸。每英寸等于2.54厘米。例如,形容手机屏幕的大小,经常说

          3.2(英)寸,3.5(英)寸,4.0(英)寸,就是指这个单位。这些尺寸的是屏幕对角线的长度。

          如果手机的屏幕是3.2英寸,表示手机屏幕的可视区域对角线长度是:3.2*2.54=8.128厘米

      mm:表示毫米,是屏幕的物理尺寸。

      pt:表示一个点,是屏幕的物理单位,大小为1英寸的1/72

      density(密度):一般为4个常用固定值:320/240/160/120,像素越高,屏幕变化不大时,密度也就越大。

        240160120三个密度值分别对应:WVGAHVGAQVGA三种屏幕分辨率。

      补充:不知道自已做的虚拟机的分辨率对应的density是多少时,可以点击AVD Manager里的details

         可以看到了。在HVGA屏幕(480*320像素)上,密度为1601px = 1dp(dip) = 1sp

         其实,我们在创建一个模拟器的时候,有一个选项是选择模拟器的大小,其实就是选择模拟器的屏幕

         大小,就是我们常说的分辨率。

         Density(密度):意思就是单位面积内容量的大小。表示每英寸有多少个显示点。

         HVGA屏幕 density=160

         WVGA屏幕 density=240

         QVGA屏幕 density = 120

         ==========================================================

         在不同density(密度)下,屏幕分辨率的信息:

         WVGA屏幕上,density = 240时,分辨率为480 * 800

                        density = 120时,分辨率为240 * 400

         更具体的是:

         -->WVGA屏幕,density=240时,屏幕分辨率为:480px*800px(一个点对应一个分辨率)

         状态栏和标题栏的高度为:38px25dip

         横屏时,屏幕宽度为800px或者800dip,工作区域高度为442px或者480dip

         竖屏时,屏幕宽度为480px或者480dip,工作区域高度为 762px或者775dip

         -->density=160时,屏幕分辨率为:320px*533px(3个点对应两个分辨率)

         状态栏和标题栏高度为:25px或者25dip

         横屏时,屏幕宽度为533px或者800dip,工作区域高度是295px或者480dip

         竖屏时,屏幕宽度为320px或者480dip,工作区域高度是508px或者775dip

         -->density=120时,屏幕分辨率为240px*400px(两个点对应一个分辨率)

         横屏时,屏幕宽度为400px或者800dip,工作区域高度是211px或者480dip

         竖屏时,屏幕宽度为240px或者480dip,工作区域高度是381px或者775dip  

    2dp, sp, px的区别?

       dp也就是dipdpsp差不多。如果设置表示控件和窗体的宽度、高度等属性时,可以

       使用dpsp。但如果要设置字体,需要使用spdp与密度无关,sp除了与密度无关外, 

       还与scale无关。如果屏幕密度为160(好像是240),这时dp,sp,px是一样的。1dp = 1sp = 1px

       例如在屏幕密度为160时,将TextView的宽度设置为160px,当在屏幕大小不变,屏幕

       密度变为320时,那么TextView的宽度只有密度为160时的一半。

       如果TextView的宽度设置为“160dp”或“160sp”,在屏幕密度为160时,系统会自动
       将Width属性设置为160px,在屏幕密度为320时,系统会自动将Width属性设置为320px

       也就是160 * 320 / 160,其中320 / 160可称为密度比例因子。也就是说,如果使用dp

       sp,系统会自动根据屏幕密度的变化而进行转换。

    3、apk的资源包中,当屏幕density=240时,使用hdpi标签的资源

                      当屏幕 density=160时,使用mdpi标签的资源

                      当屏幕density=120时,使用ldpi标签的资源

        不添加任何标签的资源,是各种分辨率下共用的。

     

  • 相关阅读:
    学习Kubernetes,这些负载均衡知识点得知道!
    Nginx请求处理流程
    字节跳动面试题+答案,答对了30+
    Cache 和 Buffer 的区别在哪里
    优化你的HTTPS(下),你需要这么做
    优化你的HTTPS(上),你需要这么做
    swift之Mac中NSSplitView的简单实用
    oc之mac中- NSBox
    Mac之NSImageView的简单实用
    swift之预防 Timer 的循环引用
  • 原文地址:https://www.cnblogs.com/scud001/p/2975591.html
Copyright © 2011-2022 走看看