Android dp px ppi pt等概念的理解

这篇具有很好参考价值的文章主要介绍了Android dp px ppi pt等概念的理解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

做Android开发过程中,总会用到px、dp、pt等概念,下面对它们代表的意义以及互相之间的关系做简单的介绍。

目录

1、px
2、ppi
3、pt
4、dp
5、Android获取屏幕状态信息

1、px 像素

就是一个颜色点,一个像素点,最小的单位。不同的颜色点组成一张图像,因此图像的基本单位是像素px。它是一个相对单位,在不同的密度单位下能变大变小。同样是1英寸的屏幕,密度越大,像素越多,则单个像素的物理尺寸越小。
像素数量px = 像素密度ppi x 屏幕尺寸in
所以在屏幕尺寸一定的情况下,密度越大,像素数量越多,显示效果就会越清晰。看下图:
android dp,Android图形显示子系统,android
像素px主要用来描述图像大小和显示器分辨率:
1) 相机所说的像素,其实就是最大像素的意思,像素是分辨率的单位,这个像素值仅仅是相机所支持的有效最大分辨率。
30万 640*480
50万 800×600
80万 1024×768 5” (3.5×5英寸)

2) 我们常说一张100kb大小的图片,指的是图片的体积。一张图像在存储时,会描述每个像素点的颜色信息、位置、数量,这些描述数据就是图片的体积,如果像素越多自然图像体积越大。

2、ppi 像素密度

指的是1英寸屏幕上显示的像素量,密度单位。决定图片的物理显示尺寸,只有涉及到显示才有意义。值越大,显示越细腻。
英寸是使用于联合王国(UK,即英国(英联邦)及其前殖民地的长度单位,一般为1英寸=2.54cm;
像素密度的直观衡量有三个关键指标:
1)每寸像素量:它指的是每平方英寸所含有的像素数量,单位为DPI;
2)像素面积:它指的是屏幕上每个像素占据的物理空间,单位为毫米;
3)像素尺寸:它指的是屏幕上每个像素的尺寸,单位为英寸。

计算公式: ppi=屏幕对角线上的像素量px/对角线长度inch = √(屏幕横向像素^2 + 屏幕纵向像素^2)/对角线长度。
android dp,Android图形显示子系统,android
android dp,Android图形显示子系统,android
比如 iphone6的ppi是多少?ppi=√(750px²+1334px²)/4.7in=326ppi。

其实我们日常所说的分辨率有两个概念。一个指显示器的分辨率,另一个是图像的分辨率:

1)显示器分辨率指显示器所能显示的像素多少。屏幕尺寸一定时,分辨率越大,像素密度越大,显示器可显示像素越多,画面就越精细。
2)图像分辨率则是单位英寸中所包含的像素点数,比如photoshop里新建画布时设置的图像分辨率是300ppi,其定义更趋近于分辨率本身的定义。

3、pt

这里只说iOS开发时使用的pt,pt是iOS系统的开发单位,而且是长度固定的,不随屏幕像素密度ppi变化而变化。
苹果公司规定:普屏时1px=1px,而普屏的ppi=163像素/英寸,那么pt=1/163英寸=0.16mm(固定值)。普屏1px=1px,高清屏1pt=2px。

用固定长度pt作为开发单位的好处是,这样可以保证同一张图片在不同设备上显示大小一样,因为pt值是固定的。高清屏上1pt等于更多的像素px,因为像素在高清屏上变小,所以pt还是固定的。

4、dp

dp是安卓的开发单位,也是一个固定长度的单位。
根据不同的屏幕分辨率,和px有不同的倍数关系。规定: 1dp等于屏幕像素密度为160ppi时1px的长度。
公式:1dp = (屏幕ppi/160)px。
android dp,Android图形显示子系统,android
现在我们知道,mdpi就是屏幕像素密度为160,那么就以它为标准吧,这些屏幕密度的比值是 ldpi : mdpi : hdpi : xhdpi : xxhdpi = 0.75 : 1 : 1.5 : 2 : 3。
安卓中清屏 1dp = 1px 高清屏 1dp = 1.5px 超清屏 1dp = 2px
一般做设计的时候以xhdpi为模板,xhdpi条件下 1dp = 2px,标注长度的时候,将长度像素除以2即为dp值,方便沟通。
在Android中像素密度可以通过下面的方式获取:

getResources().getDisplayMetrics().densityDpi

所以px与dp的转换方式如下:

public static float pxToDp(float px) {
	dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
	float densityDpi = dm.densityDpi;
	return px / (densityDpi / 160f);
}
 
public static int dpToPx(float dp) {
	dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
	float density = dm.density;
	return Math.round(dp * density);
}

5、Android获取屏幕状态信息

1)可以用过adb获取到屏幕的一些参数信息:
使用adb修改屏幕像素密度 (此命令针对全志开发板子)
adb shell am display-density 120
获取Android设备屏幕分辨率:
adb shell wm size
获取android设备屏幕密度:
adb shell wm density
修改屏幕像素密度
adb shell wm resize 1920*1080
adb shell wm size 540×960
重置屏幕尺寸大小
adb shell wm size reset
设置屏幕dpi (常用的dpi有160mdpi, 240hdpi, 320xhdpi, 480xxhdpi)
adb shell wm density 320
重置可用dpi如下命令
adb shell wm density reset

2)Android中通过方法获取屏幕信息的方法如下:文章来源地址https://www.toymoban.com/news/detail-740980.html

private String getScreenParams() {
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        int heightPixels = dm.heightPixels;//高的像素
        int widthPixels = dm.widthPixels;//宽的像素
        int densityDpi = dm.densityDpi;//dpi
        float xdpi = dm.xdpi;//xdpi
        float ydpi = dm.ydpi;//ydpi
        float density = dm.density;//density=dpi/160,密度比
        float scaledDensity = dm.scaledDensity;//scaledDensity=dpi/160 字体缩放密度比
        float heightDP = heightPixels / density;//高度的dp
        float widthDP = widthPixels / density;//宽度的dp
        String str = "heightPixels: " + heightPixels + "px";
        str += "\nwidthPixels: " + widthPixels + "px";
        str += "\ndensityDpi: " + densityDpi + "dpi";
        str += "\nxdpi: " + xdpi + "dpi";
        str += "\nydpi: " + ydpi + "dpi";
        str += "\ndensity: " + density;
        str += "\nscaledDensity: " + scaledDensity;
        str += "\nheightDP: " + heightDP + "dp";
        str += "\nwidthDP: " + widthDP + "dp";

        return str;
    }
//打印信息
	heightPixels: 2235px
    widthPixels: 1080px
    densityDpi: 480dpi
    xdpi: 391.885dpi
    ydpi: 412.75dpi
    density: 3.0
    scaledDensity: 3.0
    heightDP: 745.0dp
    widthDP: 360.0dp

到了这里,关于Android dp px ppi pt等概念的理解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Wine 图形显示基本概念

    在理解wine 图形显示之前先了解下Windows 下当前使用的图形显示方法。 Windows采用了基于GDI(Graphics Device Interface)和 DirectX两种不同的图形显示方式。 GDI(Graphics Device Interface):是Windows中内置的2D渲染引擎,主要负责窗口、控件等基本UI元素的渲染、文字绘制以及打印输出等任

    2024年01月21日
    浏览(38)
  • Android图形-架构2

    目录 引言 组件概述 底层组件: 上层组件: Android图形架构主要涉及些什么呢? 1)Android 系统级图形架构的基本元素? 2)应用框架和多媒体系统如何使用这些元素? 3)图形数据的缓冲区是如何在系统中移动的? 4) Surface 和 EGLSurface 的交互方式? 5) SurfaceView 和 TextureView 的区

    2024年02月09日
    浏览(74)
  • Android14实战:调整A2DP音量曲线(五十三)

    简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏: Audio工程师进阶系列 【 原创干货持续更新中…… 】🚀 优质专栏: 多媒体系统工程师系列 【 原创干货持续更新中…… 】🚀 人生格言: 人生从来没有捷径

    2024年01月23日
    浏览(42)
  • Android Studio实现图形验证码

    源代码 源代码MainActivity 效果图32行需要修改,不修改会报错:需要常量表达式,我的代码已修改 点击后 MainActivity RxCaptcha activity_main.xml

    2024年02月13日
    浏览(40)
  • Android图形-Hardware Composer HAL

    目录 一、引言 二、概览 三、实现HWC 3.1 为什么是HWC? 3.2 HWC的支持需求 3.3 HWC的实现思路 3.4 HWC的基元 3.5 HIDL接口 3.6 函数指针 3.7 图层和屏幕句柄 3.8 屏幕合成操作 3.9 多个屏幕 3.10 虚拟屏幕合成 3.10.1 模式 3.10.2 输出格式 3.11 同步fence 3.12 热插拔处理 3.12.1 概念理解 3.12.2 更新

    2024年02月09日
    浏览(45)
  • Android开发从0开始(图形与按钮)

    drawable是抽象类。包括图片,色块,画板,背景。 drawable-ldpi 存放低分辨率图片。drawable-hdpi 高分辨率。drawable-xxhdpi 超高分辨率。 Android:src= ” @drawable/image ”  即可使用 形状图形。圆角,矩形等常见几何图形,可以自定义画内置图形。 属性有:  size尺寸  stroke描边 corner填充

    2024年02月13日
    浏览(34)
  • Android dp to pix resources.getDimension(R.dimen.xxx) ,kotlin

    Android dp to pix resources.getDimension(R.dimen.xxx) ,kotlin    Android官方dip值到pix值转换:dip2pix,dip2px,dp2px实现_zhangphil的博客-CSDN博客 Android官方的dip to pix,dip2pix,dp2px实现网上流传的一个常用的把dip值转换为pix像素值的方法通常是这样的: public static int dip2px(Context context, float dpValu

    2024年02月16日
    浏览(41)
  • Android Matrix (二)具体图形变换参数的获取

    Matrix 类在 Android 中用于表示 3x3 的变换矩阵。这个矩阵可以应用于画布(Canvas),视图(View)或者位图(Bitmap),以实现各种图形变换,如旋转、缩放、平移和倾斜。 在 Android 中, Matrix 类并不直接提供方法来查询它所执行的特定变换(如平移、缩放、旋转等)。然而,您可

    2024年01月22日
    浏览(46)
  • 【Android学习笔记】图形与图像处理(动态处理)

    逐帧动画 AnimationDrawable与逐帧动画。在元素中定义子元素,表示动画的全部帧,并制定持续时间即可。 animation-list xmlns:android=\\\"“android:onshot=true/false item android:drawable=”@package_name:drawable/resource_name\\\"android:duration=“integer”/ /animation-list 补间动画 android使用Animation代表抽象的动画类

    2024年02月12日
    浏览(46)
  • 【Android Studio】图形化数字游戏,小游戏2048。

    手机中的小游戏是一种在日常生活中应用广泛的休闲软件,无论是在超市商店,还是在办公室,或是家庭都有着它的身影。随着移动互联网和智能手机的不断发展和进步,当今市场上已经出现了多种简单轻松的小游戏,几乎每一位智能手机的使用者都会在种类繁多的App网站上

    2024年02月03日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包