android布局单位px,dip

最近一直做的是分辨率为400*800的手机程序,整个手机的屏幕大概是 宽480px和高800px吧!于是一直用480px和800px这个标准对照的设计我的控件大小。以前在320*480的分辨率下是用dip作为自己的单位,用320dip和480dip作为标准对照设计自己。做android一年多了,突然自己发现自己对布局的基本单位都还混淆不清,真是悲剧。为了好的程序移植性,在不同的分辨率的手机下,程序的界面都无问题。所以 最好的情况就是用fill_parent和wrap_content这两种属性啦!是在不行的话就用dip,dip有好的伸缩性。以320dip和480dip的标准,在任何不同的分辨率下,可以保证手机的布局不变动。而px的话,就不能保证了哦!

<LinearLayout 
	android:orientation="horizontal"
	android:layout_width="fill_parent"
	android:layout_height="120px"
	android:layout_marginTop="50px"
>
<TextView 
	android:layout_width="120dip"
	android:layout_height="wrap_content"
	android:text="@string/username"
	android:layout_gravity="center"
	android:gravity="center"
	
/>
<EditText 
	android:layout_width="200dip"
	android:layout_height="wrap_content"
	android:hint="@string/namehint"
	android:id="@+id/etextname"
	android:singleLine="true"
	android:selectAllOnFocus="true"
	android:layout_gravity="center"
	
/>
</LinearLayout>
<LinearLayout 
	android:orientation="horizontal"
	android:layout_width="fill_parent"
	android:layout_height="120px"
>
<TextView 
	android:layout_width="180px"
	android:layout_height="wrap_content"
	android:text="@string/userpass"
	android:layout_gravity="center"
	android:gravity="center"
/>
<EditText 
	android:layout_width="300px"
	android:layout_height="wrap_content"
	android:hint="@string/passhint"
	android:layout_gravity="center"
	android:id="@+id/etextpass"
	android:singleLine="true"
	android:selectAllOnFocus="true"
	android:password="true"
/>
</LinearLayout>

效果为:


附录:一些网上的资料:


px:是屏幕的像素点
in:英寸
mm:毫米
pt:磅,1/72 英寸
dp:一个基于density的抽象单位,如果一个160dpi的屏幕,1dp=1px
dip:等同于dp
sp:同dp相似,但还会根据用户的字体大小偏好来缩放。
建议使用sp作为文本的单位,其它用dip
针对dip和px 的关系,做以下概述:
HVGA屏density=160;QVGA屏density=120;WVGA屏density=240;WQVGA屏density=120
density值表示每英寸有多少个显示点,与分辨率是两个概念。
不同density下屏幕分辨率信息,以480dip*800dip的 WVGA(density=240)为例

density=120时 屏幕实际分辨率为240px*400px (两个点对应一个分辨率)
状态栏和标题栏高各19px或者25dip 
横屏是屏幕宽度400px 或者800dip,工作区域高度211px或者480dip
竖屏时屏幕宽度240px或者480dip,工作区域高度381px或者775dip

density=160时 屏幕实际分辨率为320px*533px (3个点对应两个分辨率)
状态栏和标题栏高个25px或者25dip 
横屏是屏幕宽度533px 或者800dip,工作区域高度295px或者480dip
竖屏时屏幕宽度320px或者480dip,工作区域高度508px或者775dip

density=240时 屏幕实际分辨率为480px*800px (一个点对于一个分辨率)
状态栏和标题栏高个38px或者25dip 
横屏是屏幕宽度800px 或者800dip,工作区域高度442px或者480dip
竖屏时屏幕宽度480px或者480dip,工作区域高度762px或者775dip

apk的资源包中,当屏幕density=240时使用hdpi 标签的资源
当屏幕density=160时,使用mdpi标签的资源
当屏幕density=120时,使用ldpi标签的资源。
不加任何标签的资源是各种分辨率情况下共用的。
布局时尽量使用单位dip,少使用px



你可能感兴趣的:(android布局单位px,dip)