频道栏目
首页 > 程序开发 > 移动开发 > Android > 正文
Android开发中的各种尺度单位
2017-08-10 10:36:59      个评论    来源:Newbie  
收藏   我要投稿

Android开发中的各种尺度单位

过去,程序员通常以像素为单位设计计算机用户界面。例如:图片大小为80×32像素。这样处理的问题在于,如果在高分辨率显示器上运行该程序,则用户界面会显得很小。在有些情况下,用户界面可能会小到难以看清内容。由此我们采用与分辨率无关的度量单位来开发程序就能够解决这个问题。Android应用开发支持不同的度量单位。

度量单位含义

dip:
Density Independent Pixel(设备独立像素). 不同设备有不同的显示效果,这个和物理设备硬件有关,不依赖像素。

Dp
是 Android 建议使用的一种虚拟像素单位,可以使定义的UI布局在不同像素密度的设备上具有相同的效果。
像素密度dip = 每英寸长度含有的像素点数量 = 屏幕纵向(横向)长度 / 屏幕纵向(横向)像素数目。
这种密度无关像素尺寸等同于160 dpi 屏幕上的一个物理像素。所以 pixels = dp * (density / 160) 推导出来 1px = 160dpi ( 1 / 160),也就是说在每英寸长度含有160个像素点的屏幕上 1px =1dp。

看下面几个转化公式

public static float dp2px(@NonNull Resources resources, @FloatRange(from = 0) float dp) {
    final float scale = resources.getDisplayMetrics().density;
    return dp * scale + 0.5f;
}

/**
 * 根据手机的分辨率从 px(像素)的单位转成 dp
 */
public static float px2dp(@NonNull Context pContext, @FloatRange(from = 0) float px) {
    return px2dp(pContext.getResources(), px);
}

public static float px2dp(@NonNull Resources resources, @FloatRange(from = 0) float px) {
    final float scale = resources.getDisplayMetrics().density;
    return px / scale + 0.5f;
}

px: pixels(像素).

不同设备显示效果相同,像素(pixel),表示屏幕上一个物理像素点 不建议直接使用 px 绘制UI,因为受像素密度的影响,以 px 为单位绘制的UI在不同手机上显示的实际大小会不同

pt: point

是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用;

sp: scaled pixels

(放大像素). 主要用于字体显示。

in(英寸)

长度单位。 很少使用

mm(毫米)

长度单位。 很少使用

android系统定义了四种像素密度:

这里写图片描述

基本用法

文字尺寸用sp为单位,非文字的尺寸用dp作单位。特殊情况使用px单位,例如定义分隔线时使用宽度为1px的细线 。

点击复制链接 与好友分享!回本站首页
上一篇:Android socket实现原理-以及服务端和客户端的搭建
下一篇:android 获取手机位置信息
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站