Android屏幕density, dip等相关概念总结

2023-11-10 08:40

本文主要是介绍Android屏幕density, dip等相关概念总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 1、几个术语
VGA、HVGA、QVGA、WVGA、WQVGA
这些术语都是指屏幕的分辨率。
VGA:Video Graphics Array,即:显示绘图矩阵,相当于640×480 像素;
HVGA:Half-size VGA;即:VGA的一半,分辨率为480×320;
QVGA:Quarter VGA;即:VGA的四分之一,分辨率为320×240;
WVGA:Wide Video Graphics Array;即:扩大的VGA,分辨率为800×480像素;

WQVGA:Wide Quarter VGA;即:扩大的QVGA,分辨率比QVGA高,比VGA低,一般是:400×240,480×272;

以下列出了常见的分辨率类型。
QVGA = 320 * 240; WQVGA = 320 * 480; WQVGA2 = 400 * 240; WQVGA3 = 432 * 240; HVGA = 480 * 320; VGA = 640 * 480; WVGA = 800 * 480; WVGA2 = 768 * 480; FWVGA = 854 * 480; DVGA = 960 * 640; PAL = 576 * 520; NTSC = 486 * 440; SVGA = 800 * 600; WSVGA = 1024 * 576; XGA = 1024 * 768; XGAPLUS = 1152 * 864; HD720 = 1280 * 720; WXGA = 1280 * 768; WXGA2 = 1280 * 800; WXGA3 = 1280 * 854; SXGA = 1280 * 1024; WXGA4 = 1366 * 768; SXGAMINUS = 1280 * 960; SXGAPLUS = 1400 * 1050; WXGAPLUS = 1440 * 900; HD900 = 1600 * 900; WSXGA = 1600 * 1024; WSXGAPLUS = 1680 * 1050; UXGA = 1600 * 1200; HD1080 = 1920 * 1080; QWXGA = 2048 * 1152; WUXGA = 1920 * 1200; TXGA = 1920 * 1400; QXGA = 2048 * 1536; WQHD = 2560 * 1440; WQXGA = 2560 * 1600; QSXGA = 2560 * 2048; QSXGAPLUS = 2800 * 2100; WQSXGA = 3200 * 2048; QUXGA = 3200 * 2400; QFHD = 3840 * 2160; WQUXGA = 3840 * 2400; HD4K = 4096 * 2304; HXGA = 4096 * 3072; WHXGA = 5120 * 3200; HSXGA = 5120 * 4096; WHSXGA = 6400 * 4096; HUXGA = 6400 * 4800; SHV = 7680 * 4320; WHUXGA = 7680 * 4800;


px:(pixels)(像素):屏幕上的点,表示屏幕实际的象素,与密度相关。密度大了,单位面积上的px会比较多。例如,320*480的屏幕在横向有320个象素,在纵向有480个象素。

dip或dp(与密度无关的像素)。这个和设备硬件有关,为了支持WVGA、HVGA和QVGA 5进制空间推荐使用这个。一种基于屏幕密度的抽象单位。设置一些view的宽高可以用这个,一般情况下,在不同分辨率,都不会有缩放的感觉。

 px与dip的换算公式:
px = (density/160)*dip density一般为3个常用固定值240/160/120

scaledDensity (字体缩放比例)。即 单位 sp 的 换算值。 一般用在设定字体大小中
sp放大像素– 主要处理字体的大小。dp是与密度无关,sp除了与密度无关外,还与scale无关。
sp与px的换算公式:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. DisplayMetrics dm = new DisplayMetrics();  
  2. getWindowManager().getDefaultDisplay().getMetrics(dm);  
  3. pixelSize = (int)scaledPixelSize * dm.scaledDensity;   
in:表示英寸,是屏幕的物理尺寸。每英寸等于2.54厘米。例如,形容手机屏幕大小,经常说,3.2(英)寸、3.5(英)寸、4(英)寸就是指这个单位。这些尺寸是屏幕的对角线长度。如果手机的屏幕是3.2英寸,表示手机的屏幕(可视区域)对角线长度是3.2*2.54 = 8.128厘米
 pt:表示一个点,是屏幕的一个物理长度,大小为1英寸的1/72。
 密度Density:根据像素分辨率,在屏幕指定物理宽高范围内能显示的像素数量,一般为一英寸能显示的像素。


2、一些参数
 常见手机屏幕分辩率(希望大家可以补充)
 小米3
density=3.0, width=1080, height=1920, scaledDensity=3.0, xdpi=449.704, ydpi=447.412
小米2
density=2.0, width=720, height=1280, scaledDensity=2.0, xdpi=345.0566, ydpi=342.23157
魅族3
density=2.5, width=1080, height=1800, scaledDensity=2.5, xdpi=415.636, ydpi=415.636
三星s3
density=2.0, width=720, height=1280, scaledDensity=2.0, xdpi=304.8, ydpi=306.716
Motorola Me525 Android2.2.2
density=1.5, width=480, height=854, scaledDensity=1.5, xdpi=144.0, ydpi=144.0


 屏幕大小和密度对照表
 屏幕                 宽度          高度           尺寸          大小     密度  
  Type              (Pixels)     (Pixels)   Range (inches)      Size      Group
  
  QVGA                240          320        2.6 - 3.0         Small      Low
  WQVGA            240          400        3.2 - 3.5         Normal     Low
  FWQVGA          240          432        3.5 - 3.8         Normal     Low
  HVGA                320          480        3.0 - 3.5         Normal     Medium
  WVGA               480          800        3.3 - 4.0         Normal     High
  FWVGA             480          854        3.5 - 4.0         Normal     High
  WVGA               480          800        4.8 - 5.5         Large      Medium
  FWVGA             480          854        5.0 - 5.8         Large      Medium

3、一些有用的代码

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. mport android.content.Context;  
  2. import android.util.DisplayMetrics;  
  3.   
  4. /** 
  5.  * 计算公式 pixels = dips * (density / 160) 
  6.  *  
  7.  * @version 1.0.1 2010-12-11 
  8.  *  
  9.  * @author 
  10.  */  
  11. public class DensityUtil {  
  12.       
  13.     private static final String TAG = DensityUtil.class.getSimpleName();  
  14.       
  15.     // 当前屏幕的densityDpi  
  16.     private static float dmDensityDpi = 0.0f;  
  17.     private static DisplayMetrics dm;  
  18.     private static float scale = 0.0f;  
  19.   
  20.     /** 
  21.      *  
  22.      * 根据构造函数获得当前手机的屏幕系数 
  23.      *  
  24.      * */  
  25.     public DensityUtil(Context context) {  
  26.         // 获取当前屏幕  
  27.         dm = new DisplayMetrics();  
  28.         dm = context.getApplicationContext().getResources().getDisplayMetrics();  
  29.         // 设置DensityDpi  
  30.         setDmDensityDpi(dm.densityDpi);  
  31.         // 密度因子  
  32.         scale = getDmDensityDpi() / 160;  
  33.         Logger.i(TAG, toString());  
  34.     }  
  35.   
  36.     /** 
  37.      * 当前屏幕的density因子 
  38.      *  
  39.      * @param DmDensity 
  40.      * @retrun DmDensity Getter 
  41.      * */  
  42.     public static float getDmDensityDpi() {  
  43.         return dmDensityDpi;  
  44.     }  
  45.   
  46.     /** 
  47.      * 当前屏幕的density因子 
  48.      *  
  49.      * @param DmDensity 
  50.      * @retrun DmDensity Setter 
  51.      * */  
  52.     public static void setDmDensityDpi(float dmDensityDpi) {  
  53.         DensityUtil.dmDensityDpi = dmDensityDpi;  
  54.     }  
  55.   
  56.     /** 
  57.      * 密度转换像素 
  58.      * */  
  59.     public static int dip2px(float dipValue) {  
  60.   
  61.         return (int) (dipValue * scale + 0.5f);  
  62.   
  63.     }  
  64.   
  65.     /** 
  66.      * 像素转换密度 
  67.      * */  
  68.     public int px2dip(float pxValue) {  
  69.         return (int) (pxValue / scale + 0.5f);  
  70.     }  
  71.   
  72.     @Override  
  73.     public String toString() {  
  74.         return " dmDensityDpi:" + dmDensityDpi;  
  75.     }  
  76. }  

这篇关于Android屏幕density, dip等相关概念总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/381595

相关文章

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

Java Instrumentation从概念到基本用法详解

《JavaInstrumentation从概念到基本用法详解》JavaInstrumentation是java.lang.instrument包提供的API,允许开发者在类被JVM加载时对其进行修改... 目录一、什么是 Java Instrumentation主要用途二、核心概念1. Java Agent

Python屏幕抓取和录制的详细代码示例

《Python屏幕抓取和录制的详细代码示例》随着现代计算机性能的提高和网络速度的加快,越来越多的用户需要对他们的屏幕进行录制,:本文主要介绍Python屏幕抓取和录制的相关资料,需要的朋友可以参考... 目录一、常用 python 屏幕抓取库二、pyautogui 截屏示例三、mss 高性能截图四、Pill

Kotlin 协程之Channel的概念和基本使用详解

《Kotlin协程之Channel的概念和基本使用详解》文章介绍协程在复杂场景中使用Channel进行数据传递与控制,涵盖创建参数、缓冲策略、操作方式及异常处理,适用于持续数据流、多协程协作等,需注... 目录前言launch / async 适合的场景Channel 的概念和基本使用概念Channel 的

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

在Android中使用WebView在线查看PDF文件的方法示例

《在Android中使用WebView在线查看PDF文件的方法示例》在Android应用开发中,有时我们需要在客户端展示PDF文件,以便用户可以阅读或交互,:本文主要介绍在Android中使用We... 目录简介:1. WebView组件介绍2. 在androidManifest.XML中添加Interne

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工