众所周知,一个应用程序的良好与否,很大程度上取决于它的用户界面。这就像是一个人给人的第一感觉也是从脸开始的一样。一个应用程序首先展示给客户的就是它的界面,通途的说,也就是软件的脸面。只有良好的用户交互界面,才能在第一时间抓住客户心理,取得优势。那么今天我就来给大家说一下在Android程序的开发过程中,对于Android应用程序的一些常见的布局以及个人的一些看法,希望对大家有所帮助。
从策划到设计制作,每一步都追求做到细腻,制作可持续发展的企业网站。为客户提供成都网站建设、网站制作、网站策划、网页设计、国际域名空间、网络空间、网络营销、VI设计、 网站改版、漏洞修补等服务。为客户提供更好的一站式互联网解决方案,以客户的口碑塑造优易品牌,携手广大客户,共同发展进步。在Android4.0之前一共有5种关于Android的布局,分别是:LinearLayout(线性布局),RelativeLayout(相对布局),FrameLayout(框架布局),AbsoluteLayout(绝对布局),TableLayout(表格布局)。在Android4.0之后又新增了一种布局,GirdLayout(网格布局)。其中常用的布局有LinearLayout(线性布局),RelativeLayout(相对布局)以及最新出的GirdLayout(网格布局)。
首先介绍一下LinearLayout布局,也就是我们平时说的线性布局。顾名思义,所谓线性布局也就是在搭建Android界面时,界面元素的整体排列,呈水平排列(horizntal)或者是竖直排列(vertical)。在线性布局布局中,每一行或每一列只能放单独一个控件线性布局通过orientation属性来控制元素的排列方式即它的两个值:horizntal,vertical。而且这个属性在布局中一般都是要加进去的,告诉系统你按照什么方式排列。如果不写的话,第一行代码可能会整体报错。
LinearLayout的常见的一些属性:
1.android:orientation 定义布局内控件或组件的排列方式
可选项:vertical 、horizontal
2.android:layout_width 定义控件的宽度
可选项:fill_parent/ match_parent/ wrap_content/绝对数值
备注:fill_parent/ match_parent的效果完全一致,都是填充整个父控件。但是自2.2版本开始推荐使用match_parent 。wrap_content指的是该控件的宽度正好包裹内容物。
3.android:layout_height 定义控件的高度
可选项:fill_parent/ match_parent/ wrap_content/绝对数值
备注:fill_parent/ match_parent的效果完全一致,都是高度填充整个父控件。wrap_content指的是该控件的高度正好包裹内容物。
4.android:id 设置控件的id。这样就可以在R.java中自动生成相应的值,在程序中通过findViewById就可以调用。
设置id的格式为:android:id= "@+id/id的名字"
5.android:background 设置控件的背景颜色或背景图片
例如:android:background="#ffffff"
android:background="@drawable/图片名称"
LinearLayout特有的属性有以下几种:
1、android:orientation 布局管理器内组件的排列方式
2、android:gravity 设置布局管理器内组件的对齐方式
3、android:weightSum 为该布局下的元素设置权重
LinearLayout 子元素的特有属性:
1、android:layout_weight 子元素在 LinearLayout 中所占的权重
2、android:layout_gravity 子元素在 LinearLayout 中的对齐方式(只在LinearLayout和FrameLayout中有效,LinearLayut中只有一个方向起作用,FrameLayou都有效)
接下来再说一下RelativeLayout,相对布局。相对布局在平时的开发中也经常用到。简单来说就是一个界面元素相对于另一个元素的位置。一般需要在定义一个元素时附上该元素的ID,然后另一个元素就可以相对于这个元素进行布局了。
RelativeLayout特有属性:
1、android:gravity 设置布局容器内子控件的对齐方式
2、android:ignoreGravity 设置布局管理器内哪个控件不受gravity属性的影响
RelativeLayout子元素的特有属性:LayoutParams
A、第一组:指兄弟控件之间的相对位置。该组属性的值是另一个控件的id。
layout_toRightOf 该控件在哪个控件的右侧
layout_toLeftOf 该控件在哪个控件的左侧
layout_above 该控件在哪个控件的上侧
layout_below 该控件在哪个控件的下侧
B、第二组:指兄弟控件之间的对齐关系。该组属性的值是另一个控件的id。
layout_alignRight 该控件与哪个控件的右对齐
layout_alignLeft 该控件与哪个控件的左对齐
layout_alignTop 该控件与哪个控件的顶对齐
layout_alignBottom 该控件与哪个控件的底对齐
layout_alignStart 该控件与哪个控件的起始端对齐(4.2新出的)
layout_alignEnd 该控件与哪个控件的末端对齐(4.2新出的)
C、第三组:指控件与父布局之间的对齐关系。该组属性的值是true或者false。
layout_alignParentRight 该控件与父布局控件的右对齐吗?
layout_alignParentLeft 该控件与父布局控件的左对齐吗?
layout_alignParentTop 该控件与父布局控件的顶端对齐吗?
layout_alignParentBottom 该控件与父布局控件的底部对齐吗?
layout_centerInParent 该控件位于父布局控件的中心位置吗?
layout_centerVertical 该控件位于父布局控件的垂直中心位置吗?
layout_centerHorizontal 该控件位于父布局控件的水平中心位置吗?
现在市面上大部分的Android界面通过以上两种布局方式结合使用都可以达到美观大气的效果。接下来再说一下关于Android4.0以后新出的一种布局方式,叫做网格布局(GridLayout)。这类布局方式最典型的一个案例就是我们手机上都带有的计算器界面。当然使用LinearLayout和RelativeLayout也能完成,但是显然使用GridLayout会变得更加容易一点。使用GridLayout需要注意的一点是需要在布局界面的时候首先定义网格的行列数,通常使用的是rowCount和columnCount两个属性来定义网格的行数和列数。再者就是个别网格需要使用: layout_rowSpan 和layout_columnSpan来实现网格的跨行和跨列操作,通俗的说就是行和列的合并。
GridLayout子元素的属性:
1、android:layout_column
属性说明: 显示该控件的列。例如,android:layout_column="0",表示在第1列显示该控件;android:layout_column="1",表示在第2列显示该控件。
2、android:layout_row
属性说明: 该控件所在行。例如,android:layout_row="0",表示在第1行显示该控件;android:layout_row="1",表示在第2行显示该控件。它和 android:layout_column类似。
3、android:layout_columnSpan
属性说明: 列合并。即该控件所占的列数。例如,android:layout_columnSpan="2",表示该控件占2列。
4、android:layout_rowSpan
属性说明: 行合并。即该控件所占的行数。例如,android:layout_rowSpan="2",表示该控件占2行。
5、android:layout_gravity
属性说明:该控件的布局方式。选项值:
top -- 控件置于容器顶部,不改变控件的大小。
bottom -- 控件置于容器底部,不改变控件的大小。
left -- 控件置于容器左边,不改变控件的大小。
right -- 控件置于容器右边,不改变控件的大小。
center_vertical -- 控件置于容器竖直方向中间,不改变控件的大小。
fill_vertical -- 如果需要,则往竖直方向延伸该控件。
center_horizontal -- 控件置于容器水平方向中间,不改变控件的大小。
fill_horizontal -- 如果需要,则往水平方向延伸该控件。
center -- 控件置于容器中间,不改变控件的大小。
fill -- 如果需要,则往水平、竖直方向延伸该控件。
clip_vertical -- 垂直剪切,剪切的方向基于该控件的top/bottom布局属性。若该控件的gravity是竖直的:若它的gravity是top的话,则剪切该控件的底部;若该控件的gravity是bottom的,则剪切该控件的顶部。
clip_horizontal -- 水平剪切,剪切的方向基于该控件的left/right布局属性。若该控件的gravity是水平的:若它的gravity是left的话,则剪切该控件的右边;若该控件的gravity是 right的,则剪切该控件的左边。
start -- 控件置于容器的起始处,不改变控件的大小。
end -- 控件置于容器的结束处,不改变控件的大小。
以上三种布局方式在实际应用开发中是比较常见的,另外的布局方式如FrameLayout(框架布局),AbsoluteLayout(绝对布局),TableLayout(表格布局)相对来说就要使用的少一些,在这里就不一一详述,有兴趣的同学可以在网上搜一下其他的一些布局方式,为Android的学习打下一个良好的基础。以上总结都是我在平时学习中一点一点总结的,可能会有问题,还希望有志趣相投的同学指正,共同进步!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。