`
moonskyfox
  • 浏览: 16718 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Android Density

阅读更多
1.什么是density

  1)density

  density表示每英寸有多少个显示点(逻辑值),它的单位是dpi:dot per inch,通常屏幕大时,density就大,屏幕小时,density就小,通常

  屏幕实际分辨率为240px*400px时,density=120

  屏幕实际分辨率为320px*533px,density=160

  屏幕实际分辨率为480px*800px,density=240

  2)分辨率

  是整个屏是多少点,比如800x480,它是软件的显示单位

  3)从Android1.6版本开始支持density(对应API Level 4)

  用于解决应用在屏幕大小不同的硬件上正常显示的问题

  2.相关代码及设置

  1)AndroidManifest.xml

  <supports-screens android:anyDensity="true"/>

  <uses-sdk android:minSdkVersion="4"></uses-sdk>

  这个参数在API Level 4也就是SDK 1.6以后才启用的,而且1.6版本的API Level 4的应用默认值就是True

  2)资源目录名(android 2.0以后)

  res/xxx-hdpi当density为240时,使用此目录下的资源

  res/xxx-mdpi当density为160时,使用此目录下的资源

  res/xxx-ldpi当density为120时,使用此目录下的资源

  res/xxx不常后缀,为默认设置,同xxx-mdpi

  3)资源单位(xml文件中定义大小的单位)

  a)dp=dip=dx (Density independent pixel)

  基于屏幕密度的抽象单位,设备无关的点,用于说明与密度无关的尺寸和位置。这些单位是相对于一个160dpi的屏幕,所有一个dp是160dpi屏幕上的一个点。

  b)px

  px指软件的单位点,设备相关的点

  c)具体使用

  i.布局时尽量使用单位dip,少使用px

  若使用px,如果设某控件大小400x400px,在800x480上显示正常,而在533x320的屏上就超出屏幕了

  若使用dp,如果设某控件大小为160x160dp,就可以通过从系统中取density来算出真正的大小,比如在800x480屏的density设为240,而533x320屏的density设为160,借以下公式计算

  pixels = dips * (density / 160)

  在800x480在屏中显示240象素,而在533x320的屏中显示为160象素,控件在屏中显示的比例是一样的。

  ii.内部的处理过程分为三步:

  取screen中其它元素,转为应用的值,计算应用各控件位置,然后再转成800x480以供真正显示

  若res-xxx不存在,则读取res有的资源,然后对其做相应缩放

  3.实现density的关键源码

  1)BitmapFactory.java(用于缩放图片)

  2)ComptibilityInfo.java(用于位置计算)
分享到:
评论

相关推荐

    修改系统density、densityDpi适配

    文章目录一、简述二、追根溯源三、实现3.1 定义Density用于对系统类值的修改3.2 在MainActivity中调用3.3 处理应用程序关于字体大小的监听3.4...每个控件的显示,dp、sp等最终都会转换成px为单位,原因在于android源码T

    获取android手机的分辨率、像素密度等

    本文将深入探讨如何获取Android手机的屏幕宽度、屏幕高度、屏幕密度(density)、字体密度(font density)以及屏幕密度DPI。 首先,我们需要理解Android设备屏幕的基本概念: 1. 分辨率:指屏幕水平和垂直方向上的...

    UI——dp、dip、px、dpi、density概念及关系

    UI 开发中,常见的衡量单位有 dp、dip、px、dpi 和 density,这些单位之间存在一定的关系和转换公式,对于 Android 开发者来说,理解这些概念和关系非常重要。 dp(Device independent pixels,设备独立像素) dp ...

    Android-选择分辨率并自动生成对应的dimen.xml文件

    - **使用比例单位(dp和sp)**:dp(density-independent pixels)用于尺寸,sp(scale-independent pixels)用于字体大小,这两个单位会根据设备的像素密度进行自动缩放。 - **使用Android Studio的预览功能**:...

    Android设备密度计算器

    输入手机或平板的分辨率和尺寸即可自动计算其密度,以及其他配置: small normal large xlarge ldpi mdpi hdpi xhdpi xxhdpi nodpi

    Android-androidUI适配屏幕适配

    3. **使用比例尺寸单位**:在布局文件中,尽量使用dp(density-independent pixels)或sp(scale-independent pixels)作为尺寸单位,而不是像素(px)。dp不受设备密度影响,而sp则考虑了字体大小的缩放。 4. **...

    Android像素转换dp转px或相反

    Android设备屏幕的分辨率和物理尺寸各异,为了确保应用界面在不同设备上呈现一致的效果,引入了密度无关像素(Density-independent Pixel, dp)的概念。1dp在不同密度的屏幕上代表相同的物理尺寸。Android定义了四种...

    Android高级应用源码-计算自己手机的屏幕宽高,density值,px 宽高,dp 的宽高,及px 和dp互转的科普.zip

    本资源"Android高级应用源码-计算自己手机的屏幕宽高,density值,px 宽高,dp 的宽高,及px 和dp互转的科普.zip"提供了一个实践示例,帮助开发者深入理解这些概念。 首先,我们来探讨屏幕宽高。在Android中,屏幕...

    Android 设置最小宽高

    return (int) (dips * context.getResources().getDisplayMetrics().density + 0.5f); } ``` 接下来,我们讨论`View`类中的方法。`View`是所有Android视图组件的基类,它提供了设置最小宽度和高度的接口。对于设置...

    android手机分辨率 密度 等各种信息

    android手机分辨率 密度 等各种信息 String str = " 手机屏幕分辨率为: " + widthPixels + "*" + heightPixels + " 屏幕密度为(像素比例:0.75/1.0/1.5/2.0): " + density + " 屏幕密度DPI(每寸像素:120/...

    android 很多开源android软件

    8. **多屏幕适配**:`多屏幕显示效果.rar`涉及到了Android应用在不同分辨率和屏幕尺寸设备上的适配问题,这需要掌握Density Independent Pixel (dp)单位、比例布局(如PercentRelativeLayout)和Swatch工具的使用。...

    android dx和dp 像素和dp之间转换的工具类

    `dx`和`dp`(Density-independent Pixels)是Android系统中处理像素单位的关键概念,它们对于创建跨设备一致的用户体验至关重要。本文将详细探讨`dx`、`dp`以及如何在像素和`dp`之间进行转换。 `dp`,全称为密度...

    Density.zip

    总之,"Density.zip"是一个解决Android UI适配问题的工具,它通过动态调整density,使得开发者能够更直观地根据设计文档编写界面,提高开发效率。然而,使用时需谨慎,确保不影响其他部分的功能,并做好全面的兼容性...

    Android 设置全局字体大小

    与dp(density-independent pixel)不同,sp还会考虑系统设置的字体大小。 要实现全局字体大小的设置,我们需要以下几个步骤: 1. **创建自定义Style**: 在res/values/styles.xml文件中,定义一个自定义的主题...

    Android自适应屏幕分辨率

    在 Android 中, density 是一个重要的概念,density 的值可以是 mdpi、hdpi、xhdpi 等。我们可以根据屏幕分辨率和 density 创建不同的文件夹,例如 values-mdpi-1024x600、values-hdpi-683x400 等。在这些文件夹中...

    Android 仿苹果通话界面源码

    此外,考虑到用户体验,源码可能还包括了对不同屏幕尺寸和方向的支持,这需要使用到Android的Density Independent Pixels (dp)单位以及布局重定向。为了适应不同的Android版本,可能还采用了版本检查和兼容性策略。 ...

    TopNews类似新闻头条的android代码

    - 为不同类型的设备适配不同的屏幕尺寸,利用Android的Density Independent Pixels (dp) 和 Sp (scaled pixels) 单位确保界面一致性。 2. **网络请求**: - 使用HTTP客户端库,如OkHttp或Retrofit,发送网络请求...

    Android的getSystemService函数学习总结

    系统服务可以在 Android 应用程序中使用,例如获取屏幕宽高、 density 等信息,例如: ```java DisplayMetrics metrics = new DisplayMetrics(); WindowManager wm = (WindowManager) getContext().getSystemService...

Global site tag (gtag.js) - Google Analytics