android如何使用dip
android里面默认的单位是px,也就是说我在代码里凡是用到数字,他们所代表的都是px,但是都知道px不好,需要用dip,那我是要把所有px都转化成dip吗...
android里面默认的单位是px,也就是说我在代码里凡是用到数字,他们所代表的都是px,但是都知道px不好,需要用dip,那我是要把所有px都转化成dip吗
展开
4个回答
展开全部
我们在页面布局的时候,经常会设置容器的长度,但是到底该使用哪个作为长度的单位而懊恼。
在Android中支持的描述大小区域的类型有以下几种。
px(pixels)——像素:不同的设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。
dip(device independent pixels)——设备独立像素:这个和设备硬件有关,一般哦我们为了支持WCGA、HVGA和QVGA推荐使用这个,不依赖于像素。等同于dp。
sp(scaled pixels—best for text size)——带比例的像素。
pt(points)——磅:1pt = 1/72英寸
in(inches)——英寸
mm(millimeters)——毫米
到底px和dip有什么区别呢?
dip != px
主要是针对不同设备而言的
在Density是160的设备上,比如用AVDManager创建的默认模拟器,dip和px是一样的
但是如果同样的代码,换到不同Density的设备上,比如换到一个Density是240的设备上,dip和px体现出来的大小就不一样了
px不管在什么样的设备上都是那样长,但是dip会根据设备变化
WQVGA屏density=120;QVGA屏density=120;HVGA屏density=160;WVGA屏density=240;
density值表示每英寸有多少个显示点,与分辨率是两个概念。
当屏幕density=240时使用hdpi标签的资源
当屏幕density=160时,使用mdpi标签的资源
当屏幕density=120时,使用ldpi标签的资源。
不加任何标签的资源是各种分辨率情况下共用的。
布局时尽量使用单位dip,少使用px
换算公式为 pixs = dips * (densityDpi/160).
dips=(pixs*160)/densityDpi
如何获得设备的屏幕分辨率和屏幕密度:
如分辨率为480*800,密度为240的设备
DisplayMetrics dm =getResources().getDisplayMetrics();
dm.densityDpi=240
dm.widthPixels=480
dm.heightPixels=800
在Android中支持的描述大小区域的类型有以下几种。
px(pixels)——像素:不同的设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。
dip(device independent pixels)——设备独立像素:这个和设备硬件有关,一般哦我们为了支持WCGA、HVGA和QVGA推荐使用这个,不依赖于像素。等同于dp。
sp(scaled pixels—best for text size)——带比例的像素。
pt(points)——磅:1pt = 1/72英寸
in(inches)——英寸
mm(millimeters)——毫米
到底px和dip有什么区别呢?
dip != px
主要是针对不同设备而言的
在Density是160的设备上,比如用AVDManager创建的默认模拟器,dip和px是一样的
但是如果同样的代码,换到不同Density的设备上,比如换到一个Density是240的设备上,dip和px体现出来的大小就不一样了
px不管在什么样的设备上都是那样长,但是dip会根据设备变化
WQVGA屏density=120;QVGA屏density=120;HVGA屏density=160;WVGA屏density=240;
density值表示每英寸有多少个显示点,与分辨率是两个概念。
当屏幕density=240时使用hdpi标签的资源
当屏幕density=160时,使用mdpi标签的资源
当屏幕density=120时,使用ldpi标签的资源。
不加任何标签的资源是各种分辨率情况下共用的。
布局时尽量使用单位dip,少使用px
换算公式为 pixs = dips * (densityDpi/160).
dips=(pixs*160)/densityDpi
如何获得设备的屏幕分辨率和屏幕密度:
如分辨率为480*800,密度为240的设备
DisplayMetrics dm =getResources().getDisplayMetrics();
dm.densityDpi=240
dm.widthPixels=480
dm.heightPixels=800
2015-12-04 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
直接在XML文件中使用即可,如android:layout_width="100dp"
android的长度单位有如下几种
px(Pixels ,像素):对应屏幕上的实际像素点。例如,320*480的屏幕在横向有320个象素,在纵向有480个象素。
in(Inches ,英寸):屏幕物理长度单位。每英寸等于2.54厘米。例如,形容手机屏幕大小,经常说,3.2(英)寸、3.5(英)寸、4(英)寸就是指这个单位。这些尺寸是屏幕的对角线长度。如果手机的屏幕是3.2英寸,表示手机的屏幕(可视区域)对角线长度是3.2*2.54 = 8.128厘米。读者可以去量一量自己的手机屏幕,看和实际的尺寸是否一致。
mm(Millimeters ,毫米):屏幕物理长度单位。
pt(Points ,磅):屏幕物理长度单位, 表示一个点,是屏幕的物理尺寸。大小为1英寸的1/72。
dp(与密度无关的像素):逻辑长度单位,在 160 dpi 屏幕上,1dp=1px=1/160英寸。随着密度变化,对应的像素数量也变化,但并没有直接的变化比例。
dip:与dp相同,多用于Google示例中。
sp(与密度和字体缩放度无关的像素):与dp类似,但是可以根据用户的字体大小首选项进行缩放。
尽量使用dp作为空间大小单位,sp作为和文字相关大小单位
android的长度单位有如下几种
px(Pixels ,像素):对应屏幕上的实际像素点。例如,320*480的屏幕在横向有320个象素,在纵向有480个象素。
in(Inches ,英寸):屏幕物理长度单位。每英寸等于2.54厘米。例如,形容手机屏幕大小,经常说,3.2(英)寸、3.5(英)寸、4(英)寸就是指这个单位。这些尺寸是屏幕的对角线长度。如果手机的屏幕是3.2英寸,表示手机的屏幕(可视区域)对角线长度是3.2*2.54 = 8.128厘米。读者可以去量一量自己的手机屏幕,看和实际的尺寸是否一致。
mm(Millimeters ,毫米):屏幕物理长度单位。
pt(Points ,磅):屏幕物理长度单位, 表示一个点,是屏幕的物理尺寸。大小为1英寸的1/72。
dp(与密度无关的像素):逻辑长度单位,在 160 dpi 屏幕上,1dp=1px=1/160英寸。随着密度变化,对应的像素数量也变化,但并没有直接的变化比例。
dip:与dp相同,多用于Google示例中。
sp(与密度和字体缩放度无关的像素):与dp类似,但是可以根据用户的字体大小首选项进行缩放。
尽量使用dp作为空间大小单位,sp作为和文字相关大小单位
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果只要适配一种分辨率,使用px亦可。使用dip是为了自动适配不同分辨率。dip是按屏幕物理尺寸计算长度的。android手机因为规格不统一,同为3.5寸屏分辨率到320*240到854*480都有,使用px设置长度换一个手机显示上会有很大差距。推荐使用dip做单位
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接换就行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |