Android编程之绝对布局AbsoluteLayout和相对布局RelativeLayout实例详解

本文实例分析了Android编程之绝对布局AbsoluteLayout和相对布局RelativeLayout。分享给大家供大家参考,具体如下:

 一、绝对布局AbsoluteLayout

绝对定位AbsoluteLayout,又可以叫做坐标布局,可以直接指定子元素的绝对位置,这种布局简单直接,直观性强,但是由于手机屏幕尺寸差别比较大,使用绝对定位的适应性会比较差。

下面我们举一个例子看看:例子里的机器人图片大小是250X250,可以看到我们使用android:layout_x和android:layout_y来指定子元素的纵横坐标。

XML/HTML代码:

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout android:id="@+id/AbsoluteLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="#fff"><ImageView
android:src="@drawable/android"
android:layout_y="40dip"
android:layout_width="wrap_content"
android:layout_x="35dip"
android:id="@+id/ImageView01"
android:layout_height="wrap_content">
</ImageView>
<TextView
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:id="@+id/TextView01"
android:text="Android2.2 学习指南"
android:textColor="#0f0"
android:textSize="28dip"
android:layout_y="330dip"
android:layout_x="35dip“>
</TextView>
<TextView
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:id="@+id/TextView02"
android:text="图文并茂,理论清晰,操作性强"
android:textColor="#333"
android:textSize="18dip"
android:layout_y="365dip"
android:layout_x="35dip“>
</TextView>
</AbsoluteLayout>

让我们看一下在WQVGA的模拟器下的显示效果:

再在WVGA800的模拟器下看看显示效果:

Tip: 在绝对定位中,如果子元素不设置layout_x和layout_y,那么它们的默认值是0,也就是说它会像在FrameLayout一样这个元素会出现在左上角。

二、相对布局RelativeLayout

相对布局 RelativeLayout 允许子元素指定它们相对于其父元素或兄弟元素的位置,这是实际布局中最常用的布局方式之一。它灵活性大很多,当然属性也多,操作难度也大,属性之间产生冲突的的可能性也大,使用相对布局时要多做些测试。

下面我们用相对布局再做一次上面的例子,首先放置一个图片,其它两个文本分别相对上一个元素定位:

XML/HTML代码:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout android:id="@+id/RelativeLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#fff"
xmlns:android="http://schemas.android.com/apk/res/android"><ImageView android:id="@+id/ImageView01"
android:src="@drawable/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="40dip"
>
</ImageView>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/TextView01"
android:text="Android2.2 学习指南"
android:textColor="#0f0"
android:textSize="28dip"
android:layout_below="@id/ImageView01"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dip">
</TextView>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/TextView02"
android:text="图文并茂,理论清晰,操作性强"
android:textColor="#333"
android:textSize="18dip"
android:layout_below="@id/TextView01"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dip“>
</TextView>
</RelativeLayout>

让我们看一下在WQVGA的模拟器下的显示效果:

再看一下在更大屏幕(WVGA800)模拟器上的显示效果:

从上图可以看到界面效果基本保持了一致,而不是像绝对定位一样龟缩在左上角;同学们看到自动缩放的功能是采用了dip做单位带来的好处。

下面介绍一下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                    本元素的右边缘和某元素的的右边缘对齐
第三类:属性值为具体的像素值,如30dip,40px
android:layout_marginBottom              离某元素底边缘的距离
android:layout_marginLeft                   离某元素左边缘的距离
android:layout_marginRight                 离某元素右边缘的距离
android:layout_marginTop                   离某元素上边缘的距离

我们再把上面的例子重新做一遍,这一次多放一些属性在里面,大家试验一下:

XML/HTML代码:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout android:id="@+id/RelativeLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#cfff" 色彩的设置是argb,第一个c是透明度
xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView android:id="@+id/ImageView01"
android:src="@drawable/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="40dip"
android:layout_centerHorizontal="true">
</ImageView><TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/TextView01"
android:text="Android2.2 学习指南"
android:textColor="#0f0"
android:textSize="28dip"
android:layout_below="@id/ImageView01"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dip">
</TextView><TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/TextView02"
android:text="图文并茂,理论清晰,操作性强"
android:textColor="#333"
android:textSize="18dip"
android:layout_below="@id/TextView01"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dip">
</TextView>
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/TextView03"
android:text="alignTop"
android:textColor="#333"
android:textSize="18dip"
android:layout_alignTop="@id/ImageView01" 和ImageView01上边缘对齐
android:layout_centerHorizontal="true">
</TextView><TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/TextView04"
android:text="alignLeft"
android:textColor="#333"
android:textSize="18dip"
android:layout_alignLeft="@id/ImageView01"
android:layout_centerHorizontal="true">
</TextView><TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/TextView05"
android:text="alignRight"
android:textColor="#333"
android:textSize="18dip"
android:layout_alignRight="@id/ImageView01"
android:layout_centerHorizontal="true">
</TextView><TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/TextView06"
android:text="alignBottom"
android:textColor="#333"
android:textSize="18dip"
android:layout_alignBottom="@id/ImageView01"
android:layout_centerHorizontal="true">
</TextView>
</RelativeLayout>

绝对布局AbsoluteLayout和相对布局RelativeLayout的内容就讲完了,希望本文所述对大家Android程序设计有所帮助。

时间: 2015-12-19

Android入门之LinearLayout、AbsoluteLayout的用法实例讲解

本文实例介绍了Android中LinearLayout.AbsoluteLayout的用法,希望能对于初学Android的朋友起到一点帮助作用.具体内容如下: Android 的UI 布局都以Layout 作为容器,并且在上面按照规定排列控件,这方面跟JAVA 的Swing 和LWUIT 很像.控件跟Layout 有很多属性是一样的,可以在Properties 里面修改,跟.NET/Delphi 等RAD 类似,其中最常用的属性有以下这些: id="@+id/edtInput",ID

Android编程布局(Layout)之AbsoluteLayout用法实例分析

本文实例讲述了Android编程布局(Layout)之AbsoluteLayout用法.分享给大家供大家参考,具体如下: AbsoluteLayout,顾名思义,就是绝对位置的布局:也可以叫做坐标布局,也就是指定元素的绝对位置(或者叫绝对坐标值).这种布局简单直接,直观性强,但是由于手机屏幕尺寸差别比较大,使用绝对定位的适应性会比较差. <?xml version = "1.0" encoding = "utf-8"?> <AbsoluteLayo

Android AbsoluteLayout和RelativeLayout布局详解

Android 线性布局: AbsoluteLayout布局和RelativeLayout布局.  1.绝对布局 AbsoluteLayout 绝对定位AbsoluteLayout,又可以叫做坐标布局,可以直接指定子元素的绝对位置,这种布局简单直接,直观性强,但是由于手机屏幕尺寸差别比较大,使用绝对定位的适应性会比较差. 下面我们举一个例子看看:例子里的机器人图片大小是250X250,可以看到我们使用android:layout_x和android:layout_y来指定子元素的纵横坐标. <?

Android编程布局控件之AbsoluteLayout用法实例分析

本文实例讲述了Android编程布局控件之AbsoluteLayout用法.分享给大家供大家参考,具体如下: AbsoluteLayout是绝对布局管理器,指的是指定组件的左上角绝对坐标来指定组件的布局 <?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"

Android布局之绝对布局AbsoluteLayout详解

本文实例为大家分享了Android绝对布局AbsoluteLayout的具体代码,供大家参考,具体内容如下 1>AbsoluteLayout(绝对布局) 又可以叫做坐标布局,可以直接指定子元素的绝对位置(xy) 2>由于手机屏幕尺寸差别比较大 使用绝对定位的适应性会比较差,在屏幕的适配上有缺陷 3>AbsoluteLayout子类控件的属性 android:layout_x="35dip" 控制当前子类控件的x位置 android:layout_y="40d

Android中XUtils3框架使用方法详解(一)

xUtils简介 xUtils 包含了很多实用的android工具. xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响... xUitls 最低兼容android 2.2 (api level 8) 今天给大家带来XUtils3的基本介绍,本文章的案例都是基于XUtils3的API语法进行的演示.相信大家对这个框架也都了解过, 下面简单介绍下XUtils3的一些基本知识. XUtils3一共有4大功能:注解模块,网络

Android 属性动画ValueAnimator与插值器详解

Android 属性动画ValueAnimator与插值器详解 一.ValueAnimator详解: ValueAnimator是整个动画的核心,ObjectAnimator即是继承自ValueAnimator来实现. ValueAnimator更像是一个数值发生器,用来产生具有一定规律的数字,从而让调动者来控制动画的实现过程. 1.ValueAnimator的使用: ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, 100); val

Android getViewById和getLayoutInflater().inflate()的详解及比较

Android getViewById和getLayoutInflater().inflate()的详解及比较                由于本人刚刚学习Android 对于getViewById和getLayoutInflater().inflate()的方法该如何使用不知如何分别,这里就上网查下资料整理下,大家可以看下. LayoutInflater 要明白这个问题首先要知道什么是LayoutInflater.根据Android的官方API解释: Instantiates a layou

Android 中 Tweened animation的实例详解

Android 中 Tweened animation的实例详解 Tweened animation有四种类型,下面主要介绍Scale类型. 运行效果如下: Android SDK提供了2种方法:直接从XML资源中读取Animation,使用Animation子类的构造函数来初始化Animation对象,第二种方法在看了Android SDK中各个类的说明就知道如何使用了,下面简要说明从XML资源中读取Animation.XML资源中的动画文件animation.xml内容为: <?xml ve

Android 中RecyclerView顶部刷新实现详解

Android 中RecyclerView顶部刷新实现详解 1. RecyclerView顶部刷新的原理 RecyclerView顶部刷新的实现通常都是在RecyclerView外部再包裹一层布局.在这个外层布局中,还包含一个自定义的View,作为顶部刷新时的指示View.也就是说,外层布局中包含两个child,一个顶部刷新View,一个RecyclerView,顶部刷新View默认是隐藏不可见的.在外层布局中对滑动事件进行处理,当RecyclerView滑动到顶部并继续下滑的时候,根据滑动的距

Android 状态栏的设置适配问题详解

Android 状态栏的设置适配问题详解 最近看了很多关于状态栏的问题的处理,总结出处理状态栏分两个方向1>5.0一下2>5.0以上的手机状态栏的设置,,,,,,,,这里说的都是自定义的toolbar,我这里已经把titlebar给隐藏掉了 (1) 关于5.0一下:首先我们需要在res文件下的style中设置, <!-- Base application theme. --> <style name="AppTheme" parent="AppT

Android activity堆栈及管理实例详解

本示例演示如何通过设置Intent对象的标记,来改变当前任务堆栈中既存的Activity的顺序. 1. Intent对象的Activity启动标记说明: FLAG_ACTIVITY_BROUGHT_TO_FRONT 应用程序代码中通常不设置这个标记,而是由系统给单任务启动模式的Activity的设置. FLAG_ACTIVITY_CLEAR_TASK 如果给Intent对象添加了这个标记,那么在Activity被启动之前,会导致跟这个Activity关联的任何既存的任务都被清除.也就是说新的Ac

Android 网络请求框架Volley实例详解

Android 网络请求框架Volley实例详解 首先上效果图 Logcat日志信息on Reponse Volley特别适合数据量不大但是通信频繁的场景,像文件上传下载不适合! 首先第一步 用到的RequetQueue RequestQueue.Java RequestQueue请求队列首先得先说一下,ReuqestQueue是如何对请求进行管理的...RequestQueue是对所有的请求进行保存...然后通过自身的start()方法开启一个CacheDispatcher线程用于缓存调度,开

Android Studio开发环境搭建教程详解

对于移动端这块,笔者之前一直都是进行iOS开发的,也从来没用过Java.但是因为进入了Google Android全国大学生移动互联网创新挑战赛(进入官网)的总决赛(笔者"西部计算机教育提升计划"的项目被直接推荐进入决赛),这个比赛要求一定要提交apk程序,所以我不得不赶紧学习一下Android开发了. 下面就对自己学习的过程做一个记录. 一.安装Android Studio 笔者用的计算机配置如下: Mac下安装Android Studio应该更简单一些,只需要下载一个Android

基于Android MarginLeft与MarginStart的区别(详解)

我们在写layout布局的时候,我们会发现有这样几个比较相似的属性: MarginStart   MarginLeft MarginEnd    MarginRight 这些属性的区别是什么?  根据api注释,我们得知MarginStart指的是控件距离开头View部分的间距大小,MarginLeft则指的是控件距离左边View部分的间距大小,MarginEnd和MarginRight同理. 一般情况下,View开始部分就是左边,但是有的语言目前为止还是按照从右往左的顺序来书写的,例如阿拉伯语