# android dpi 、 dip 、分辨率、屏幕尺寸、px、density 关系以及换算 **Published by:** [xiaoming.eth](https://paragraph.com/@xiaoming/) **Published on:** 2022-01-09 **URL:** https://paragraph.com/@xiaoming/android-dpi-dip-px-density ## Content 一、基本概念 dip : Density independent pixels ,设备无关像素。 dp :就是dip px : 像素 dpi :dots per inch , 直接来说就是一英寸多少个像素点。常见取值 120,160,240。我一般称作像素密度,简称密度 density : 直接翻译的话貌似叫 密度。常见取值 1.5 , 1.0 。和标准dpi的比例(160px/inc) 分辨率 : 横纵2个方向的像素点的数量,常见取值 480X800 ,320X480 屏幕尺寸: 屏幕对角线的长度。电脑电视同理。 屏幕比例的问题。因为只确定了对角线长,2边长度还不一定。所以有了4:3、16:9这种,这样就可以算出屏幕边长了。 二、工具类实现public class DensityUtils { private DensityUtils() { /* cannot be instantiated */ throw new UnsupportedOperationException("cannot be instantiated"); } /** * dp转px * * @param context * @param val * @return */ public static int dp2px(Context context, float dpVal) { return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpVal, context.getResources().getDisplayMetrics()); } /** * sp转px * * @param context * @param val * @return */ public static int sp2px(Context context, float spVal) { return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, spVal, context.getResources().getDisplayMetrics()); } /** * px转dp * * @param context * @param pxVal * @return */ public static float px2dp(Context context, float pxVal) { final float scale = context.getResources().getDisplayMetrics().density; return (pxVal / scale); } /** * px转sp * * @param fontScale * @param pxVal * @return */ public static float px2sp(Context context, float pxVal) { return (pxVal / context.getResources().getDisplayMetrics().scaledDensity); } ## Publication Information - [xiaoming.eth](https://paragraph.com/@xiaoming/): Publication homepage - [All Posts](https://paragraph.com/@xiaoming/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@xiaoming): Subscribe to updates - [Twitter](https://twitter.com/mihayou_eth): Follow on Twitter