2023年7月13日发(作者:)
Android开发-UI布局Android中所有的UI(⽤户界⾯)都是使⽤View和ViewGroup对象建⽴的,View是⼀个可以将⼀些信息绘制在屏幕上并与⽤户产⽣交互的对象ViewGroup是⼀个可以包含多个的View和ViewGroup的容器,⽤来定义UI布局。Android提供了⼀系列View和ViewGroup⼦类,开发者可以灵活的组合使⽤它们来完成界⾯布局、界⾯元素绘制和⽤户交互等⼯作开发者还可以选择性地继承⼀些系统提供的View,来定义View,把⾃⼰定义的界⾯元素显⽰给⽤户。Android的UI开发使⽤层次模型来完成,⼀般都是在⼀个ViewGroup中嵌套多层ViewGroup,每层中含有任意数⽬的View,但最好不要超过⼗层常⽤的布局LinearLayout——线性布局RelativeLayout——相对布局FrameLayout——帧布局TableLayout——表格布局AbsoluteLayout——绝对布局GridLayout——⽹格布局布局定义⽅式定义UI布局的最常⽤的⽅法是使⽤XML布局⽂件,如同HTML⼀样,XML为布局提供了⼀种可读的结构。XML中的每个元素都是,View或ViewGroup的⼦孙的对象组成的树。树根是⼀个ViewGroup对象,所有的叶节点都是View对象,树的分⽀节点都是ViewGroup对象。Android中是ViewGroup可以嵌套包含很多View以及ViewGroup对象,ViewGroup是View的⼦类。Android UI屏幕适配屏幕尺⼨:指屏幕的对⾓线长度,单位为英⼨,1英⼨== 2.45cm屏幕分辨率:指⽔平和垂直⽅向的像素点个数,单位px,1px== 1像素点,⼀般以垂直像素*⽔平像素,例如 1920 * 1080屏幕像素密度:指每英⼨上的像素点数,单位是dpi,dpi:dot per inch。屏幕像素密度与屏幕尺⼨有关。px:像素点,构成图像的最⼩单位dip:device independent pixels(设备独⽴像素),也是密度⽆关像素。以160dpi为基准,1dip=1px。dp:与dip相同。sp:专门⽤于字体的像素单位,⼀般定义为偶数。LinearLayout (线性布局)1. vertical / horizontal使⽤android:orientation= "vertical/horizontal"定义排列⽅向//
2. margin / padding属性android:layout_marginXXX(XXX:left/tpo)android:paddingXXX(XXX:left/top)区分:margin:表⽰控件距离其他或者屏幕边缘的间距。---外边距padding:表⽰控件的内部内容距离控件边缘的间距。---内边距含义设置该控件距离左、上边界的距离设置控件内部距离控件边缘的距离 3. gravity / layout_gravity属性android:gravityandroid:layout_gravity含义⽤于设置该View内部内容的对齐⽅式⽤于设置该View在其⽗类中的对齐⽅式注意:如果线性布局的排布⽅式为⽔平,那么layout_gravity在⽔平⽅向上就不起作⽤,只有在垂直⽅向上起作⽤,反之亦然。可选值包括:left、right、top、bottom、center、horizoncenter_vertical、center_horizontalbottomcenter_horizontal(使⽤组合使⽤)4. layout_weight (LinearLayout特有属性)LinearLayout特有属性,android:layout_weight,表⽰⽐重,可实现百分⽐布局,如果控件为
match_parent,则layout_weight的值与占⽐重反相关,即:其值越⼤,占⽤⽐例越⼩,如果控件为
wrap_content,则对⽐重判断则为正相关,即其值越⼩,占⽤的⽐例越⼩。 android:weightSum="3">
注意:若在⼀个页⾯中,有⼀个有权重控件,和⼀个⽆权重的控件,系统会先给⽆权重的控件分配空间后,才会得到需要百分⽐的空间⼤⼩,进⾏百分⽐划分。权重布局只存在于LinearLayout中,其余布局⽆效。RelativeLayout(相对布局)RelativeLayout(相对布局):按照控件相互之间的相对位置来确定,RelativeLayout中往往需要定义每⼀个控件的资源ID。1. 常⽤属性常⽤属性layout_alineParentXXX(XXX:⽅向)android:layout_marginXXXandroid:paddingXXX(XXX:left/top)android:layout_centerVerticalandroid:layout_centerHorizontalandroid:layout_centerInParent对齐⽅式外部间距内部间距垂直居中⽔平居中⽗类的中部含义注意:layout_width和layout_height是在平⾯图形中不可或缺的两个属性,任何图形需要显⽰都需要宽和⾼。2. android:layout_toRightOf(在某个控件的右⽅)
3. anignBaseline (基准线对齐)4. layout_below (在XX的下⽅)注意:针对相对布局⽽⾔,⼀般不会过多给定很多想关联的属性,否则耦合性就会⼤⼤增加。相对布局的重点在于理解控件id,在相对布局中的控件⼀般都存在id属性,+id表⽰是系统中本来不存在的对应的id值,需要将这个id值添加到系统中,@id表⽰从系统中去除已经添加好的id。TableLayout (表格布局)TableLayout属于⾏和列形式的管理控件,每⾏为⼀个TableRow对象也可以是⼀个View对象。在TableRow中还可以继续添加其他控件,每添加⼀个⼦控件就成⼀列,TableLayout不会⽣成边框。TableLayout是继承⾄LinearLayout,即TableLayout有LinearLayout的属性(见上⽂)。同时也有⾃⼰的特有属性:XML属性名android:collapseColumnsandroid:shrinkColumnsandroid:stretchColumns说明设置指定的列为collapse,该列会被隐藏设置指定的列为shrinkable,该列的宽度进⾏收缩,⾃适应⽗类容器的⼤⼩设置指定的列为stretch,该列会被拉伸,填充满表格的空⽩区域 android:stretchColumns="0,1,2" android:shrinkColumns="0"
android:collapseColumns="2">
FrameLayout (帧布局)/ AbsoluteLayout (绝对布局)FrameLayout(帧布局)默认是按左上⾓(0,0)开始排布,在帧布局下的每⼀个控件都是以画⾯的形式进⾏呈现,最开始定义的控件出现在最下⽅,最后定义的控件出现在最上⽅,⼀般⽤于⼿机联系⼈的导航显⽰字母、帧动画等内容。 android:layout_width="match_parent" android:layout_height="match_parent" android:background="#00ff00" android:text="你好"/> android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="30dp" android:background="#ff0000" android:text="页⾯"/>
AbsoluteLayout(绝对布局),⼜叫做坐标布局,可以直接指定⼦元素的绝对位置,这种布局简单、直观性强。由于⼿机屏幕尺⼨差别较⼤,使⽤绝对定位适应性会⽐较差,不推荐使⽤。⼀般⽤于固定屏幕⼿机。属性android:layout_xandroid:layout_y确定X坐标,以左上⾓为顶点确定Y坐标,以左上⾓为顶点含义注意:若不设置layout_x和layout_y,那么他们的默认值是(0,0)他们会出现在左上⾓。GridLayout (⽹格布局)GridLayout(⽹格布局)是在android4.0版本以上出现的布局,可以实现并⾏和并列的效果。常⽤属性android:layout_columnSpanandroid:layout_rowSpanandroid:layout_gravitycolumnCountrowCount注意:含义扩展列的数⽬扩展⾏的数⽬填充⽅式定义存在多少列定义存在多少⾏GridLayout与TableLayout有什么不同?TableLayout定义TableRow来呈现内容,GridLayout可以直接定义控件来使⽤,并且TableLayout不可以合并⾏或列。计算器页⾯的实现计算器页⾯.jpg android:columnCount="4">
Android UI开发分类1. 界⾯布局开发——定义界⾯的布局2. 控件开发——定义单个界⾯元素3. AdapterView与Adapter开发——列表显⽰(适配器的开发)4. UI组件开发——对话框、通知、菜单等5. ⾃定义View、图形图像和动画——通过代码,⾃⾏绘制界⾯。
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1689216262a222309.html
评论列表(0条)