支持各种屏幕密度

翻译 2016年06月01日 10:22:51

支持各种屏幕密度

本教程将指导您

  1. 使用非密度制约像素
  2. 提供备用位图

您还应参阅

试试看

下载示例应用

NewsReader.zip

本教程将向您介绍如何通过提供不同资源和使用独立于分辨率的测量单位来支持不同屏幕密度。

使用非密度制约像素


在设计布局时,大家经常会误使用绝对像素来定义距离或尺寸,您一定要避免犯这种错误。由于各种屏幕的像素密度都有所不同,因此相同数量的像素在不同设备上的实际大小也有所差异,这样使用像素定义布局尺寸就会产生问题。因此,请务必使用 dp 或 sp 单位指定尺寸。dp 是一种非密度制约像素,其尺寸与 160 dpi 像素的实际尺寸相同。sp 也是一种基本单位,但它可根据用户的偏好文字大小进行调整(即尺度独立性像素),因此您应将该测量单位用于定义文字大小(请勿用其定义布局尺寸)。

例如,请使用 dp(而非 px)指定两个视图间的间距:

<Button android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/clickme"
    android:layout_marginTop="20dp" />

请务必使用 sp 指定文字大小:

<TextView android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:textSize="20sp" />

提供备用位图


由于 Android 可在具有各种屏幕密度的设备上运行,因此您提供的位图资源应始终可以满足各类普遍密度范围的要求:低密度、中等密度、高密度以及超高密度。这将有助于您的图形在所有屏幕密度上都能得到出色的质量和效果。

要生成这些图片,您应先提取矢量格式的原始资源,然后根据以下尺寸范围针对各密度生成相应的图片。

  • xhdpi:2.0
  • hdpi:1.5
  • mdpi:1.0(最低要求)
  • ldpi:0.75

也就是说,如果您为 xhdpi 设备生成了 200x200 尺寸的图片,就应该使用同一资源为 hdpimdpi 和 ldpi 设备分别生成 150x150、100x100 和 75x75 尺寸的图片。

然后,将生成的图片文件放在 res/ 下的相应子目录中(如下所示),系统就会根据运行您应用的设备的屏幕密度自动选择合适的图片:

MyProject/
  res/
    drawable-xhdpi/
        awesomeimage.png
    drawable-hdpi/
        awesomeimage.png
    drawable-mdpi/
        awesomeimage.png
    drawable-ldpi/
        awesomeimage.png

这样一来,无论您何时引用 @drawable/awesomeimage,系统都能根据相应屏幕的 dpi 选取合适的位图。

解决方案-支持各种屏幕密度

基本概念 px: 像素(pixel),设备上的物理像素点。dp:跟dip是同一个概念,与屏幕物理像素点无关,而是基于屏幕密度抽象单位,被称作“设备独立像素”,会随着屏幕的密度进行自动的大小调整。sp...
  • a2241076850
  • a2241076850
  • 2016年08月02日 15:32
  • 263

Supporting Different Densities 支持各种屏幕密度

Use Density-independent Pixels One common pitfall you must avoid when designing your layouts is usi...
  • sergeycao
  • sergeycao
  • 2013年04月17日 09:32
  • 511

Android屏幕适配之支持各种屏幕密度(三)

我们之前了解过屏幕的像素密度 dpi,我们身边有很多种类的手机,它们的dpi各不相同,我们如何去适配这些不同的屏幕呢?单位务必使用dp或者sp;dp 是一种非密度制约像素,其尺寸与 160 dpi 像...
  • litengit
  • litengit
  • 2016年07月23日 17:25
  • 864

Android修改屏幕密度

diff --git a/device/rockchip/rk3288/system.prop b/device/rockchip/rk3288/system.prop index efeb5d3.....
  • u012855539
  • u012855539
  • 2017年09月13日 20:07
  • 342

修改屏幕密度的方式lcd_density

1 adb remount 2 adb pull /system/build.prop . 3
  • fu_shuwu
  • fu_shuwu
  • 2014年11月01日 14:19
  • 1070

屏幕适配,彻底理解dp,dpi,屏幕密度,分辨率之间的爱恨纠葛

android初学者都会对密度,分辨率,dp,dpi等等混淆,今天来好好捋一捋这剪不断理还乱的江湖关系! 废话不多说,直入主题。 in:英寸inch,物理尺寸,1in =2.54厘米(cm)。4.2寸...
  • jijiaxin1989
  • jijiaxin1989
  • 2014年12月31日 14:00
  • 4021

iPhone6和iPhone6 Plus和iPhone5s屏幕尺寸,分辨率,密度 对比

苹果总喜欢用最小的代价(相对于开发者来说)给消费者(客户)呈现出最完美的产品。...
  • xuexixiaoshizhe
  • xuexixiaoshizhe
  • 2015年06月17日 21:10
  • 4020

android各种分辨率和屏幕密度

这里,发上一张图片吧,讲的是各分辨率和各种屏幕密度的对应关系,android设备尺寸错综复杂,各种蛋疼啊!...
  • zjc08125
  • zjc08125
  • 2013年04月15日 10:24
  • 982

屏幕密度计算公式

屏幕密度的计算
  • myfather103
  • myfather103
  • 2017年04月21日 14:57
  • 911

修改安卓屏幕分辨率(显示密度)

修改安卓手机屏幕显示的分辨率可以增加或减少可以在屏幕上显示的内容,并不能改变实际的分辨率。类似于电脑上windows里修改显示分辨率。当然,同样一块屏幕,分辨率高了,显示的内容也就变小了,肉眼分辨的难...
  • AA747604141
  • AA747604141
  • 2014年01月22日 14:07
  • 6503
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:支持各种屏幕密度
举报原因:
原因补充:

(最多只允许输入30个字)