android学习之快速入门2--android五种布局方式介绍

前面认识了android的工程文件后,现在应该学习android的五种布局方式了,就是软件的界面。使用过MFC的人肯定知道摆放控件的界面,MFC采用的是鼠标拖动的方式进行布局,而android提供了一种简单编程的方式进行布局,这样能实现比较精准和炫丽的布局,个人觉得还是比较好的,学起来也很容易。五种布局方式分别是:FrameLayout(框架布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)。我目前用得比较多的是线性布局和相对布局,相对布局对屏幕尺寸有很好的适应性。下图是继承自ViewGroup的一些布局类,可以帮助理解。每一个布局都有自己的方式,这五个布局元素可以相互嵌套应用,做出美观的界面。

1FrameLayout(框架布局)

官方文档的定义:FrameLayout是最简单的一个布局对象。它被定制为你屏幕上的一个空白备用区域,之后你可以在其中填充一个单一对象 — 比如,一张你要发布的图片。所有的子元素将会固定在屏幕的左上角;你不能为FrameLayout中的一个子元素指定一个位置。后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部份或全部挡住。

2LinearLayout(线性布局)

线性布局是一个视图组,它所有的子视图都在一个方向对齐,水平或者垂直。提供了控件水平垂直排列的模型,可以通过设置子控件的weight布局参数控制各个控件在布局中的相对大小,可以通过android:orientation 属性指定布局的方向。线性布局的所有子视图排列都是一个靠着另一个,因此垂直列表每行仅仅有一个子视图,不管有多宽。水平列表只能有一行的高度(最高子视图的高度加上边距距离)。

以下是LinearLayout常用属性:

layout_weighLineaLayout布局的重要的属性,指定每个子控件在父级线性布局中的相对重要性,这个weight在垂直布局时,代表行距;水平的时候代表列宽;weight值越大就越大。

layout_weight特殊说明:与其它线性布局属性不同,其它线性的属性应用在布局视图本身,而这个属性是应用在它的子控件上的。当屏幕上有足够空间来正确的展示所有控件的时候,这个权值技巧很有效。那就是说,当空间很紧的时候,权值属性可能会被其它因素覆盖,比如视图裁剪或者在TextView下试图不环绕文本。

属性介绍:

 水平(vertical)垂直(horizontal
 fill-parent占满整个屏幕,wrap-content刚好适合控件内容的大小
对齐方式gravity取值:
 top不改变大小,位置置于容器的顶部
 bottom不改变大小,位置置于容器的底部
 left不改变大小,位置置于容器的左边
 right不改变大小,位置置于容器的右边
 center_vertical不改变大小,位置置于容器的纵向中央部分
 center_horizontal不改变大小,位置置于容器的横向中央部分
 center不改变大小,位置置于容器的横向和纵向的中央部分
 fill_vertical可能的话,纵向延伸可以填满容器
 fiil_horizontal可能的话,横向延伸可以填满容器
 fiil可能的话,纵向和横向延伸填满容器

3AbsoluteLayout(绝对布局)

AbsoluteLayout(坐标布局)让子元素在指定准确的x/y坐标值上显示。(0, 0)为左上角,当向下或向右移动时,坐标值将变大。通常不推荐使用AbsoluteLayout,除非你有正当理由要使用它,因为它使界面代码太过刚性,以至于在不同的设备上可能不能很好地工作。Androidlayout_x/layout_y=”56px”确定控件位置;

4RelativeLayout(相对布局)

以相对位置显示它的子元素,一个视图可以指定相对于它的兄弟视图的位置(例如在给定视图的左边或者下面)或相对于RelativeLayout的特定区域的位置(例如底部对齐,或中间偏左)。属性比较多,下面汇总出来:
第一类:属性值为true或false 
android:layout_centerHrizontal :水平居中 
android:layout_centerVertical :垂直居中 
android:layout_centerInparent :相对于父元素完全居中 
android:layout_alignParentBottom :贴紧父元素的下边缘 
android:layout_alignParentLeft :贴紧父元素的左边缘 
android:layout_alignParentRight :贴紧父元素的右边缘 
android:layout_alignParentTop :贴紧父元素的上边缘 
android:layout_alignWithParentIfMissing :如果对应的兄弟元素找不到的话就以父元素做参照物 

第二类:属性值必须为id的引用名“@id/id-name
android:layout_below :在某元素的下方 
android:layout_above :在某元素的的上方 
android:layout_toLeftOf :在某元素的左边 
android:layout_toRightOf :在某元素的右边 
android:layout_alignTop :本元素的上边缘和某元素的的上边缘对齐 
android:layout_alignLeft :本元素的左边缘和某元素的的左边缘对齐 
android:layout_alignBottom :本元素的下边缘和某元素的的下边缘对齐 
android:layout_alignRight :本元素的右边缘和某元素的的右边缘对齐 

第三类:属性值为具体的像素值,如10px,40px


android:layout_marginBottom :离某元素底边缘的距离 
android:layout_marginLeft :离某元素左边缘的距离 
android:layout_marginRight :离某元素右边缘的距离 
android:layout_marginTop :离某元素上边缘的距离 

5TableLayout(表格布局)

     是一个ViewGroup以表格显示它的子视图(view)元素,即行和列标识一个视图的位置。一个TableLayout 由许多的TableRow 组成,每个TableRow 都会定义一行( row ,你可以定义其它的子对象,这在下面会解释到)。TableLayout 容器不会显示row 、cloumns 或cell 的边框线。每个 row 拥有0个或多个的cell ,每个cell 拥有一个View 对象。

用表格布局需要知道以下几点:

android:shrinkColumnssetShrinkAllColumns(boolean),作用是设置表格的列是否收缩(列编号从0开始,下同),多列用逗号隔开(下同),如android:shrinkColumns="0,1,2",即表格的第123列的内容是收缩的以适合屏幕,不会挤出屏幕。

android:collapseColumnssetColumnCollapsed(int,boolean),作用是设置表格的列是否隐藏

android:stretchColumnssetStretchAllColumns(boolean),作用是设置表格的列是否拉伸

以上的属性可以参考:http://www.apkbus.com/forum.php?mod=viewthread&tid=202
为了便于阅读我也粘贴过来了:

android:collapseColumns:以第0行为序,隐藏指定的列:

android:collapseColumns该属性为空时,如下图:

android:collapseColumns=0,2  意思是把第0和第2列去掉,如下图:

android:shrinkColumns:以第0行为序,自动延伸指定的列填充可用部分:

LayoutRow里面的控件还没有布满布局时,shrinkColumns不起作用,如下图:

设置了shrinkColumns=0,1,2,布局完全没有改变,因为LayoutRow里面还剩足够的空间。

LayoutRow布满控件时,如下图:

设置设置了shrinkColumns=2,则结果如下图,控件自动向垂直方向填充空间:

android:stretchColumns:以第0行为序,尽量把指定的列填充空白部分:

设置stretchColumns=1,则结果如下图,第1列被尽量填充(Button02TextView02同时向右填充,直到TextView03被压挤到最后边)

 

最后对Layout的属性进行介绍,便于以后查找:

 

android:id为控件指定相应的ID
android:text  指定控件当中显示的文字,需要注意的是,这里尽量使用strings.xml文件当中的字符串
android:gravity 指定View组件的对齐方式,比如说居中,居右等位置 这里指的是控件中的文本位置并不是控件本身
android:layout_gravity  指定Container组件的对齐方式.比如一个button linearlayout里,你想把该button放在靠左、靠右等位置就可以通过该属性设置.以button为 例,android:layout_gravity="right"button靠右
android:textSize 指定控件当中字体的大小
android:background 指定该控件所使用的背景色,RGB命名法
android:width  指定控件的宽度
android:height  指定控件的高度
android:layout_width  指定Container组件的宽度
android:layout_height  指定Container组件的高度
android:layout_weight  View中很重要的属性,按比例划分空间
android:padding*  指定控件的内边距,也就是说控件当中的内容
android:sigleLine  如果设置为真的话,则控件的内容在同一行中进行显示
android:scaleType  是控制图片如何resized/moved来匹对ImageViewsiz
android:layout_centerHrizontal  水平居中
android:layout_centerVertical  垂直居中
android:layout_centerInparent  相对于父元素完全居中
android:layout_alignParentBottom  贴紧父元素的下边缘
android:layout_alignParentLeft  贴紧父元素的左边缘
android:layout_alignParentRight  贴紧父元素的右边缘
android:layout_alignParentTop  贴紧父元素的上边缘
android:layout_alignWithParentIfMissing  如果对应的兄弟元素找不到的话就以父元素做参照物
android:layout_below  在某元素的下方
android:layout_above  在某元素的的上方
android:layout_toLeftOf  在某元素的左边
android:layout_toRightOf  在某元素的右边
android:layout_alignTop  本元素的上边缘和某元素的的上边缘对齐
android:layout_alignLeft  本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom  本元素的下边缘和某元素的的下边缘对齐
android:layout_alignRight  本元素的右边缘和某元素的的右边缘对齐
android:layout_marginBottom  离某元素底边缘的距离
android:layout_marginLeft  离某元素左边缘的距离
android:layout_marginRight  离某元素右边缘的距离
android:layout_marginTop  离某元素上边缘的距离
android:paddingLeft  本元素内容离本元素右边缘的距离
android:paddingRight  本元素内容离本元素上边缘的距离
android:hint  设置EditText为空时输入框内的提示信息
android:LinearLayout  它确定了LinearLayout的方向,可以为vertical(垂直布局)horizontal(水平布局)
android:interpolator  ::::定义一个动画的变化率(the rate of change)。这使得基本的动画效果(alpha, scale, translate, rotate)得以加速,减速,重复等。用通俗的一点的话理解就是:动画的进度使用 Interpolator 控制。interpolator 定义了动画的变化速度,可以实现匀速、正加速、负加速、无规则变加速等。Interpolator 是基类,封装了所有 Interpolator 的共同方法,它只有一个方法,即 getInterpolation (float input),该方法 maps a point on the timeline to a multiplier to be applied to the transformations of an animation

Android 提供了几个 Interpolator 子类,实现了不同的速度曲线,如下:
AccelerateDecelerateInterpolator 在动画开始与介绍的地方速率改变比较慢,在中间的时侯加速
AccelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始加速
CycleInterpolator 动画循环播放特定的次数,速率改变沿着正弦曲线
DecelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始减速
LinearInterpolator 在动画的以均匀的速率改变

 

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TomiTwo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值