6_Andorid的尺寸单位和控件内外边距
-
在使用布局或控件时,有时需要指定它们的尺寸。安卓系统提供了三种单位:
1.距离单位之px
以像素为单位进行设置,屏幕上每一个点,就是一个像素,例如一部安卓手机,屏幕像素是
800x 480
,就是说屏幕高度有800
个像素点,宽度有480
个像素点。
我们可以使用像素这个单位来指定控件的大小,控件之间的距离等,但是,用像素不是好的选择,用像素会给我们带来很多问题,为什么?我们用一个简单的例子说明
假设有两个物理尺寸都为5寸大小的屏幕,它们的屏幕分辨率不同,一个是1080*1920,另一个是450*800。如果指定一个按钮的大小为200px长,200px宽,那么它们的显示效果就如下图。很明显,两者的差别也太大了,界面就严重变形了。所以,想让一个区域的大小在不同屏幕的上显示的都差不多,就需要考虑像素密度。为了显示同样的长度,在密度大的屏幕上,使用到的像素就要多一些,在密度小的屏幕上,使用到的像素就要少一些。
2.距离单位之dp
- 引入dp之前,先引入dpi这个概念:
什么是dpi?
dpi(dots per inch)
叫做屏幕像素密度,就是每英寸有多少个像素点。
dp
:密度无关像素,这是在布局和控件中应该使用的单位;
- 安卓引入了
dp(dip)
的概念之后,实际显示的像素就可以通过下面这个公式计算出来
px=dp∗(dpi/160)
为什么要使用dp?因为dp和密度有关,无关像素,即使在不同分辨率上,也能正常显示.
比如我在320*480的手机想让这个控件占宽度的一半,那好,因为我的dpi为160,所以我在这个屏幕上:1dp=1px(像素) ,这样的话,我这个控件使用的像素就是:160px = 160dp * 1.
在640*960的手机屏幕上也想让这个控件占一半就很简单了。我们只需要知道这个手机的dpi,如下如这个屏幕dpi为320,根据公式:px = dp*(dpi/160),把320代入,得到:1dp = 2px;那么这个控件实用的像素就是:320px = 160dp*2.
3.距离单位sp
sp
:用于字体大小的设置,它可以让字体大小根据用户在设置
中的设置,进行缩放;
使用一个I例子演示一下:
- 新建一个Anroid应用程序,命名为S02_SP:
- 修改一下布局文件,采用线性布局,新建两个TextView控件,一个大小为50dp,另一个为50sp:
- 看起来好像没有什么区别,大小一样,但是sp是可以缩放的,如果在模拟机的设置改变字体的大小,被设置成sp字体的就可以进行缩放。我们试试在模拟器中缩小绿色背景的Hello World.
- 打开模拟器的:Setting——>Display——>Front Size——>Small
- 在模拟器中重新启动这个应用:
- 运行发现,被我们设置成sp的字体,通过系统设置后,字体变小了:
4.控件的内边距和外边距
边距都可以单独设置,也可以同时设置:
用例子演示一下:
- 新建一个Android引用程序,名为:S03_Margin_Padding
- 修改布局文件为线性布局,方向为垂直方向,然后添加三个TextView控件对比一下:
- 运行这个Android 应用程序,可以清除的知道控件内边距和外边距的设置:
附录:
本博文Demo下载:https://github.com/zGuangYuan/Android-
github的用法:点我查看