px和dp(sp) 之间转化公式:

1  乘以(dp转px)或者除以(px转dp) scal缩放因子,在上浮0.5f

  • /**
  • * 密度转换像素
  • * */
  • public static int dip2px(float dipValue) {
  • return (int) (dipValue * scale + 0.5f);
  • }
  • /**
  • * 像素转换密度
  • * */
  • public int px2dip(float pxValue) {
  • return (int) (pxValue / scale + 0.5f);
  • }

2  而因子是根据系统的屏幕密度density(每英寸多少显示点)  /160 (默认加载mdpi的标准160ppi  1px(1倍的图))

     3  屏幕密度density:::

  • DisplayMetrics metric = new DisplayMetrics();
  • getWindowManager().getDefaultDisplay().getMetrics(metric);
  • 或者
  • DisplayMetrics metric = context.getApplicationContext().getResources().getDisplayMetrics();
  • int width = metric.widthPixels; // 屏幕宽度(像素)
  • int height = metric.heightPixels; // 屏幕高度(像素)
  • float density = metric.density; // 屏幕密度倍数(0.75(ldpi) / 1.0(mdpi) / 1.5(hdpi) /2(xhdpi) /3(xxhdpi) /4(xxxhdpi) )
  • int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240/ 320/ 480/ 640)

  

     4  还可以这样获取手机屏幕密度:::

1 手机 2垂直边 分辨率  平方和 结果 开平方 得到 斜角线的长度

2 除以 屏幕尺寸(比如 6寸),就是dpi密度

-----例如:   (2160*2160+1080*1080) 开平方后 / 6寸 = 402(华为mete10 pro)

5  scal因子 = displayMetrics实例 获取到densityDpi(120 160 240 320 480 640) /160 (mdpi的标准160ppi)):

6  Mdpi 160 是1倍 1px=1dp; hdip 240 是mdpi的 1.5倍 1dp=1.5px;  xhdpi 320 是mdpi的2倍 ;

xxhdpi 480 是mdpi的3倍;xxxhdpi 640 是mdpi的4倍。。。

7    不能根据分辨率来适配,根据密度(dpi)对应的文件夹来适配;

放到对应的目录下,否则会出现小图高分辨上不清晰

(  高分辨率适配上 图片要大), 大图放低分辨率上被压缩的时候也会消耗内存。

8   对应表:

1  像素密度范围  xhdpi之下的递增80 ; 以上的都是递增 160 ;

2  一般都是16:9 (1280*720p  1920*1080p  2560*1440 2k);

全面屏幕 出现后,开始有了大概2:1 比例的分辨率,  宽都是1080高度不同 (2280*1080 2246*1080 2160*1080)

 
像素密度等级 像素密度范围 分辨率(通常) 像素密度与dp转换关系
ldpi —dpi-120dpi 320*240   1dp = 0.75px
mdpi 120dpi-160dpi 480*320 (Half-size VGA) 1dp = 1px
hdpi 160dpi-240dpi 800*480 (Wide VGA) 1dp = 1.5px
xhdpi 240dpi-320dpi 1280*720 1dp = 2px
xxhdpi 320dpi-480dpi 1920*1080 1dp = 3px
xxxhdpi 480dpi-640dpi 3840*2160 1dp = 4px
 

其他:::

1  android 一般都是以iphone 750为比例来设计。。。一般用2x倍的切图, 因为android的720p和750相差不大。

2  Screen屏幕的高度,包括顶部状态栏 和 底部的操作栏。

3  Windows窗口的高度,只包括app可视区页面高度。

4  类似前端js也是一样: scrollHeight 整个页面的滚动高度;clientHeight 可视区高度.

附: sketch的标注标准

android屏幕密度规律及dp px转换的更多相关文章

  1. Android屏幕密度(Density)和分辨率概念详解

    移动设备有大有小,那么如何适应不同屏幕呢,这给我们编程人员造成了很多困惑.我也是突然想到这些问题,然后去网上搜搜相关东西,整理如下.   首先,对下面这些长度单位必须了解. Android中的长度单位 ...

  2. dp px 转换工具

    public class DensityUtil { private final static String TAG = "DensityUtil"; private static ...

  3. Android 屏幕密度适配

    Android Icon Size and Location for Apps   分辨率 DPI Density scale 1dp对应像素 1dp对应物理尺寸 Location Icon Size ...

  4. dp,px转换

    public static int dip2px(Context context, float dpValue) {        final float scale = context.getRes ...

  5. Android屏幕相关的概念

    1. 屏幕尺寸 实际的物理尺寸,作为屏幕的对角线测量. 为简单起见,安卓所有的实际屏幕尺寸为四个广义的大小:小,正常,大,和特大. 2. 屏幕密度 一个屏幕的物理区域内像素的数量:通常称为DPI(每英 ...

  6. Android度量单位说明(DIP,DP,PX,SP) (转帖)

    (一)概念 dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA.HVGA和QVGA 推荐使用这个,不 ...

  7. Android度量单位说明(DIP,DP,PX,SP)

    本文转载于:http://blog.sina.com.cn/s/blog_6b26569e0100xw6d.html (一)概念 dip: device independent pixels(设备独立 ...

  8. Android中dip, dp, px,pt, sp之间的区别:

    Android中dip.dp.sp.pt和px的区别   1.概述 过去,程序员通常以像素为单位设计计算机用户界面.例如:图片大小为80×32像素.这样处理的问题在于,如果在一个每英寸点数(dpi)更 ...

  9. Android 屏幕适配

    前言 手机的屏幕适配一直是非常麻烦的,现在我就以做笔记的方式来简单梳理下 单位理解 首先让我们先来看看关于手机所用到的单位 真实物理尺寸单位: mm:表示毫米,是屏幕的物理尺寸. in:表示英寸,是屏 ...

随机推荐

  1. 添加wifi adb

    https://blog.csdn.net/ouyang_peng/article/details/50370786 首先弄懂怎么设置adb wifi无线调试的功能,如下所示. 1. 手机端开启adb ...

  2. html的那些小小细节

    1.get post方式提交的不同 get:数据放在url的后面,用?连接                        会在客户端保留缓存信息,不安全                        ...

  3. ID、句柄、指针、对象互相转换

    /*************************************************************************************************** ...

  4. Docker Swarm集群部署

    一.系统环境 1)服务器环境 节点名称 IP 操作系统 内核版本 manager 172.16.60.95 CentOs7 4.16.1-1.el7.elrepo.x86_64 node-01 172 ...

  5. 1.8.2suspend与resume方法的缺点-独占

    这两个方法使用不当,容易造成公共的同步对象的独占,使得其他线程无法访问公共的同步对象 测试 package com.cky.bean; /** * Created by edison on 2017/ ...

  6. 利用putty在window下控制linux的terminal、ftp传输

    google搜索putty,可能要FQ才能进入官方网站下载. 首先将虚拟机下的linux的网络适配器设置成桥接模式,并且将linux系统的firewall和iptables(防火墙关闭). firew ...

  7. _编程语言_C++_Lambda函数与表达式

    C++11提供了对匿名函数的支持,称为Lambda表达式函数 Lambda 表达式把函数看作对象.Lambda 表达式可以像对象一样使用,比如可以将它们赋给变量和作为参数传递,还可以像函数一样对其求值 ...

  8. (DP 雷格码)Gray code -- hdu -- 5375

    http://acm.hdu.edu.cn/showproblem.php?pid=5375 Gray code Time Limit: 2000/1000 MS (Java/Others)    M ...

  9. 【python-pip】pip安装国外插件timeout解决方案

    为什么会timeout呢,你懂得(不懂???!!!) 解决方案: 使用国内豆瓣镜像安装(也有其他的镜像,自己可以搜) pip install xxx -i http://pypi.douban.com ...

  10. lca tarjin

    这个算法  我个人认为是  遍历每一个点把它当成一些询问的最近祖先 1 2 3 4 5 6 low是并差集,vis是是否访问过,访问过为true,没有为false: 假设询问是(4,4),(4,5), ...