【官方】Android支持不同的密度或分辨率(Supporting Different Densities)



官方原文地址:http://developer.android.com/training/multiscreen/screendensities.html


本文主要介绍:

1.dip dp sp 简单用法

2.适配不同分辨率屏幕图片的处理方法


支持不同的密度或分辨率

本课介绍如何通过提供不同的资源和使用的测量分辨率独立单元支持不同屏幕密度(分辨率)


使用独立的像素密度

设计你的布局时会有一个常见的错误,你必须避免使用绝对像素来定义距离或大小。定义布局的尺寸与像素是一个问题,因为不同的屏幕有不同的像素密度,所以相同的像素数可以对应于不同的设备上不同的物理尺寸。因此,指定尺寸的时候,总是请使用DP或SP单元。一个DP是对应于一个像素的160 dpi的物理尺寸,密度无关的像素。一个sp是相同的基本单元,而是由用户首选的文本大小(它是一个独立的规模像素)的缩放,所以在定义文字大小,你应该使用这种测量单元(但从来没有为布局大小)


例如,当你指定的两个视图之间的间距,而不是使用DP PX:

(这里我感觉官方没有说清楚,控件与控件之间最好用dip来表示,而不适用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 (baseline)
ldpi: 0.75

从上面可以看出,如果你生成一个200x200的图像xhdpi设备,你应该HDPI产生相同的资源在150×150,100×100的MDPI终于为LDPI设备一个75X75的形象。
然后,将生成的图像文件,在适当的子目录下的res /,系统会自动挑选根据您的应用程序运行在设备的屏幕密度正确的:

如下目录:

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

然后,您引用@绘制/ awesomeimage任何时候,系统会选择基于屏幕的DPI适当的位图。
为您的应用程序创建图标的资产更多的提示和指引,看到图标设计准则。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值