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. urllib — URL handling modules

    urllib is a package that collects several modules for working with URLs: •urllib.request for opening ...

  2. python3.4对已经存在的excel写入数据

    #!/usr/bin/env python # -*- coding:utf-8 -*- # __author__ = "blzhu" """ pyt ...

  3. Edifact 95B报文解读

    PART 1 INTRODUCTION D100_D.95B PART 2 UNIFORM RULES OF CONDUCT FOR INTERCHANGE PART2_D.ZIP(1) OF TRA ...

  4. Arria10 SDI II学习笔记

    12G-SDI16是什么意思? 关于 int_vpid_byte1 int_vpid_byte2 int_vpid_byte3 int_vpid_byte4 这些参数是不是如果外部数据有就不需要传输, ...

  5. 【慕课网实战】Spark Streaming实时流处理项目实战笔记十一之铭文升级版

    铭文一级: 第8章 Spark Streaming进阶与案例实战 黑名单过滤 访问日志 ==> DStream20180808,zs20180808,ls20180808,ww ==> ( ...

  6. ckeditor 实现ctrl+v粘贴图片并上传、word粘贴带图片

    公司做的项目需要用到文本上传功能. Chrome+IE默认支持粘贴剪切板中的图片,但是我要粘贴的文章存在word里面,图片多达数十张,我总不能一张一张复制吧? 我希望打开文档doc直接复制粘贴到富文本 ...

  7. 1.8.1suspend与resume方法使用

    暂停线程意味着线程还能恢复运行 suspend()方法暂停线程.resume()恢复线程 测试如下 package com.cky.thread; /** * Created by edison on ...

  8. jQuery插件初级练习1

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  9. spring默认为单例模式

    这两天看到一个bug,记录下. 在获取任务的时候,本来任务不是由这个柜员领取的,但是最后跑到那个柜员下面去了. 查看日志,发现两个任务的领取操作很近,日志是穿插着打的. 后来经人指点,说spring初 ...

  10. DEV通过FindFilterText自动检索gridview内容

    private void TreeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { if (names!=nul ...