引用自Google API Guides

Dimension


A dimension value defined in XML. A dimension is specified with a number followed by a unit of measure. For example: 10px, 2in, 5sp. The following units of measure are supported by Android:

dp
Density-independent Pixels - An abstract unit that is based on the physical density of the screen. These units are relative to a 160 dpi (dots per inch) screen, on which 1dp is roughly equal to 1px. When running on a higher density screen, the number of pixels used to draw 1dp is scaled up by a factor appropriate for the screen's dpi. Likewise, when on a lower density screen, the number of pixels used for 1dp is scaled down. The ratio of dp-to-pixel will change with the screen density, but not necessarily in direct proportion. Using dp units (instead of px units) is a simple solution to making the view dimensions in your layout resize properly for different screen densities. In other words, it provides consistency for the real-world sizes of your UI elements across different devices.
sp
Scale-independent Pixels - This is like the dp unit, but it is also scaled by the user's font size preference. It is recommend you use this unit when specifying font sizes, so they will be adjusted for both the screen density and the user's preference.
pt
Points - 1/72 of an inch based on the physical size of the screen.
px
Pixels - Corresponds to actual pixels on the screen. This unit of measure is not recommended because the actual representation can vary across devices; each devices may have a different number of pixels per inch and may have more or fewer total pixels available on the screen.
mm
Millimeters - Based on the physical size of the screen.
in
Inches - Based on the physical size of the screen.

Note: A dimension is a simple resource that is referenced using the value provided in the name attribute (not the name of the XML file). As such, you can combine dimension resources with other simple resources in the one XML file, under one <resources> element.

用法

FILE LOCATION:
res/values/filename.xml
The filename is arbitrary. The <dimen> element's name will be used as the resource ID.
RESOURCE REFERENCE:
In Java: R.dimen.dimension_name
In XML: @[package:]dimen/dimension_name
SYNTAX:
   1: <?xml version="1.0" encoding="utf-8"?>
   2: <resources>    
   3:     <dimen name="dimension_name">dimension</dimen>
   4: </resources>
ELEMENTS:
<resources>
Required. This must be the root node.

No attributes.

<dimen>
A dimension, represented by a float, followed by a unit of measurement (dp, sp, pt, px, mm, in), as described above.

attributes:

name
String. A name for the dimension. This will be used as the resource ID.
EXAMPLE:
XML file saved at res/values/dimens.xml:
   1: <?xml version="1.0" encoding="utf-8"?>
   2: <resources>    
   3:     <dimen name="textview_height">25dp</dimen>    
   4:     <dimen name="textview_width">150dp</dimen>    
   5:     <dimen name="ball_radius">30dp</dimen>    
   6:     <dimen name="font_size">16sp</dimen>
   7: </resources>

This application code retrieves a dimension:

Resources res = getResources();
float fontSize = res.getDimension(R.dimen.font_size);

This layout XML applies dimensions to attributes:

   1: <TextView    
   2:     android:layout_height="@dimen/textview_height"    
   3:     android:layout_width="@dimen/textview_width"    
   4:     android:textSize="@dimen/font_size"/>
   

常见的密度比值:

QVGA:240*320 的密度比值是: 0.75

HVGA:320*480 的密度比值是: 1.0

WVGA:480*800 的密度比值是: 1.5

计算方式

float density = getResources().getDisplayMetrics().density;

1.0 * 160dp = 160px HVGA

0.75 * 160dp = 120px QVGA

1.5 * 160dp = 240px WVGA

更多相关文章

  1. GitHub 标星 2.5K+!教你通过玩游戏的方式学习 VIM!
  2. android 拍照或选择图片的实现方式//AtlerDialog的多种样式
  3. [Android] 在程序中实现延时的常用的两种方式
  4. Android与js的交互方式
  5. android广播指定权限
  6. Android设置Activity全屏的两种方式
  7. Android进行全屏设置
  8. android statusbar隐藏的几种方式
  9. Android中Word转Html

随机推荐

  1. 描述下IOS和android系统流畅度的差别
  2. Android(安卓)Studio离线安装gradle(亲测
  3. android WebView与JS交互小结
  4. 【Android:简单夜间模式切换实现】夜间模
  5. 搜狐面试- Android事件分发机制完全解析,
  6. Android逆向之Xposed详解
  7. Android缓存机制Lrucache内存缓存和DiskL
  8. Android(安卓)事件分发原理和实际场景解
  9. Android开发调试无法连接到夜神模拟器的
  10. unity语音聊天--亲加通讯云(Android/iOS)--