当前位置: 首页 > news >正文

安卓页面的布局和生命周期(新手村第三篇) - 详解

目录

1、布局简介

(1)布局的通用属性

(2)LinearLayout(线性布局)

(3)RelativeLayout(相对布局)

(4)TableLayout(表格布局)

a、TableLayout 布局常用属性

b、TableLayout中控件常用属性

(5)FrameLayout(帧布局)

(6)ConstraintLayout(约束布局)

相对定位

居中定位和倾向

chain(链)

2、生命周期

(1)Activity文件内容:

(2)Activity 的7个回调方法:


1、布局简介

在安卓项目中,一般分为布局文件和代码文件,布局文件就是我们的 xml 文件,而代码文件就是我们常说的 Activity。

安卓常用的就是5种布局:LinearLayout(线性布局)、RelativeLayout(相对布局)、FrameLayout(帧布局)、TableLayout(表格布局)和ConstraintLayout(约束布局)。

(1)布局的通用属性

属性名称描述
android:id

设置布局的唯一标识。

在XML文件中它的属性值是通过“@+id/属性名称”定义的。为布局指定android:id 属性后,在R.java文件中,会自动生成对应的int值。在Java代码中通过为findViewById()方法传入该int值来获取该布局对象。

android:layout_width

设置布局的宽度。

(1)fill_parent: 表示该布局的宽度与父容器(从根元素讲是屏幕)的宽度相同。
(2)match_parent:与fill_parent的作用相同,从Android 2.2开始推荐使用match_parent。
(3)wrap_content:表示该布局的宽度恰好能包裹他的内容。

android:layout_height

设置布局的高度。

(1)fill_parent: 表示该布局的宽度与父容器的高度相同。
(2)match_parent:与fill_parent的作用相同,从Android 2.2开始推荐使用match_parent。
(3)wrap_content:表示该布局的高度恰好能包裹他的内容。

android:background设置布局的背景,其值可以引用图片资源,也可以是颜色资源。
android:layout_margin

设置当前布局与屏幕边界或与周围控件的距离。

属性值为具体的尺寸,如50dp。与之相似的还有android:layout_marginTop、android:layout_marginBottom、android:layout_marginLeft、android:layout_marginRight属性,分别用于设置当前布局与屏幕、周围布局或者控件的上下左右边界的距离。

android:padding

设置当前布局与该布局中控件的距离。其值可以是具体的尺寸,如50dp。与之相似的还有android:paddingTop、android:paddingBottom、android:paddingLeft、android:paddingRight属性,分别用于设置当前布局中控件与该布局上下左右的距离。

需要注意的是,Android系统提供的五种常用布局必须设置android:layout_widthandroid:layout_height属性指定其宽高,其他的属性可以根据需求进行设置。

android:gravity设置当前 View 内部子元素(或内容)的对齐方向。
android:layout_gravity设置某个 View 的对齐方向。

(2)LinearLayout(线性布局)


线性布局中子控件的属性

属性名称描述
android: orientation设置布局内控件的排列顺序,其可选值为 vertical 和 horizontal
vertical:表示LinearLayout布局内控件依次从上到下竖直排列。
horizontal:表示LinearLayout布局内控件依次从左到右水平排列。
android: layout_weight在布局内设置控件权重,该属性被称为权重,属性值可直接写int值。通过设置该属性值,可使布局内的控件按照权重比显示大小,在进行屏幕适配时起到关键作用。
andriod:divider列表类控件和容器类控件支持分割线属性,需要配合android:dividerHeight、android:showDividers和android:dividerPadding使用;ConstraintLayout、RelativeLayout、FrameLayout不支持。

(3)RelativeLayout(相对布局)

RelativeLayout(相对布局)是通过相对定义的方式指定子控件的位置。XML标签格式如下:


相对布局中子控件的属性

属性描述
android: layout_centerParent设置当前控件位于父布局的中央位置
android: layout_centerVertical设置当前控件位于父布局的垂直居中位置
android:layout_centerHorizontal设置当前控件位于父布局的水平居中位置
android:layout_above设置当前控件位于某控件上方
android:layout_below设置当前控件位于某控件下方
android:layout_toLeftOf设置当前控件位于某控件左侧
android:layout_toRightOf设置当前控件位于某控件右侧
android:layout_alignParentTop设置当前控件是否与父控件顶端对齐
android:layout_alignParentLeft设置当前控件是否与父控件左对齐
android:layout_alignParentRight设置当前控件是否与父控件右对齐
android:layout_alignParentBottom设置当前控件是否与父控件底端对齐
android:layout_alignTop设置当前控件的上边界与某控件的上边界对齐
android:layout_alignBottom设置当前控件的下边界与某控件的下边界对齐

android:layout_alignLeft

设置当前控件的左边界与某控件的左边界对齐
android:layout_alignRight设置当前控件的右边界与某控件的右边界对齐

(4)TableLayout(表格布局)

使用行和列管理布局中的控件,不需要声明行数和列数,而是在布局中加入控件来控制。



......

TableLayout 继承自 LinearLayout 因此它完全支持 LinearLayout 所支持的属性,此外,它还有其他的常用属性。

a、TableLayout 布局常用属性

属性描述
android:stretchColumns设置可被拉伸的列。如:android:stretchColumns=“0”,表示第1列可被拉伸
android:shrinkColumns设置可被收缩的列。如:android:shrinkColumns=“1,2”,表示第2,3列可收缩
android:collapseColumns设置可被隐藏的列。如:android:collapseColumns=“0”,表示第1列可被隐藏

b、TableLayout中控件常用属性

属性描述
android:layout_column设置该控件显示的位置,如android:layout_column=“1” 表示在第2个位置显示
android:layout_span设置该控件占据几行,默认为1行

在TableLayout布局中,列的宽度由该列中最宽的那个单元格(控件)决定,整个表格布局的宽度则取决与父容器的宽度。

(5)FrameLayout(帧布局)

用于在屏幕上创建一块空白区域,添加到该区域中的每个子控件占一帧,这些帧会一个一个叠加在一起,后加入的控件会叠加在上一个控件上层

默认情况下,帧布局中的所有控件会与左上角对齐。


帧布局除了通用属性外,还有两个特殊属性

属性描述
android: foreground设置帧布局容器的前景图像(始终在所有子控件之上)
android: foregroundGravity设置前景图像显示的位置

(6)ConstraintLayout(约束布局)

ConstraintLayout(约束布局)并不太适合使用XML代码的方法编写布局,但是它非常适合使用可视化的方式编写界面布局。
相对于传统布局,ConstraintLayout(约束布局)在几个方面提供了一些新的特性

  • 相对定位

ConstraintLayout(约束布局)中的控件可以在横向纵向上以添加约束关系的方式进行相对定位,其中,横向边包括left、start、right、end,纵向边包括top、bottom、baseline(文本底部的基准线)

属性描述
layout_constraintLeft_toLeftOf控件的左边与另外一个控件的左边对齐
layout_constraintLeft_toRightOf控件的左边与另外一个控件的右边对齐
layout_constraintRight_toLeftOf控件的右边与另外一个控件的左边对齐
layout_constraintRight_toRightOf控件的右边与另外一个控件的右边对齐
layout_constraintTop_toTopOf控件的上边与另外一个控件的上边对齐
layout_constraintTop_toBottomOf控件的上边与另外一个控件的底部对齐
layout_constraintBottom_toBottomOf控件间的文本内容基准线对齐
layout_constraintStart_toEndOf控件的起始边与另外一个控件的尾部对齐
layout_constraintStart_toStartOf控件的起始边与另外一个控件的起始边对齐
layout_constraintEnd_toStartOf控件的尾部与另外一个控件的起始边对齐
layout_constraintEnd_toEndOf控件的尾部与另外一个控件的尾部对齐

  • 居中定位和倾向

相对定位不仅可以使用在两个子控件上,也可以使用在子控件和父控件中。

倾向的属性:

属性描述
layout_constraintHorizontal_bias横向的倾向
layout_constraintVertical_bias纵向的倾向
  • chain(链)

Chain(链)是一种特殊的约束,它使我们能够对一组水平或竖直方向互相关的控件进行统一管理。一组控件通过一个双向的约束关系链接起来。
Chain的头控件可以通过layout_constraintHorizontal_biaslayout_constraintVertical_bias属性设置水平链条和竖直链条的样式。其属性值为spread、spread_insidepacked。
(1)spread:设置控件在布局内平均分布。其为Chain的默认样式
(2)spread_inside:设置两端的控件与父布局无间距显示,其他的控件将在剩余的空间内采用spread样式进行布局。
(3)packed:设置Chain中的所有控件合并在一起后在布局内居中显示。

ConstraintLayout(约束布局)中,当控件宽或者高的属性设置为0dp时,Chain的3种样式可以搭配layout_constraintHorizontal_weight属性形成Weighted Chain的样式。packed可以搭配layout_constraintVertical_bias属性控制Chain与父容器的间距从而形成Packed Chain With Bias样式。

2、生命周期

提到生命周期,首先要了解一下我的的页面文件 Activity。

(1)Activity文件内容:

public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);EdgeToEdge.enable(this);setContentView(R.layout.activity_main);ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);return insets;});}
}
  • 我们自己新建的页面都需要继承 AppCompatActivity 这个父类,这是谷歌官方提供的一个类,是对 Material Design 安卓开发设计规范的一种支持,并且集成了 ActionBar 应用栏;
  • onCreate 方法是安卓 Activity 的生命周期方法,当 Activity第一次创建时调用,必须使用super.onCreate(savedInstanceState) 来执行初始化父类。
  • setContentView(R.layout.activity_main) 方法的作用是设置当前Activity的可视化布局,其中 R.layout.activity_main 中的 是生成的资源类,layout 表示布局资源目录,activity_main 是具体的布局文件名。

说到生命周期,那这里我们需要了解一下安卓页面生命周期

Activity 在进栈和出栈过程中,一般有四种状态:运行、暂停、停止和销毁。

运行:页面在栈顶,即在屏幕最上方展示,当前页面处于运行状态。

暂停:当前页面被另一个页面部分遮挡时,当前页面处于暂停状态。

停止:当前页面被另一个页面完全遮挡时,当前页面处于停止状态。

销毁:当前页面由于人为或者系统原因被销毁时,处于销毁状态。

(2)Activity 的7个回调方法:

  • onCreate:当Activity页面第一次被创建时调用。
  • onStart:当用户可以看到这个Activity时调用。
  • onResume:当用户点击屏幕时调用。
  • onPause:当系统准备启动或者回复另一个活动时调用。
  • onStop:当活动完全不可见时调用。
  • onDestory:当活动被销毁时调用。
  • onRestart:当活动由停止转为运行状态时调用。

以上就是本篇的所有内容啦!内容参考了两篇文章,如有需要,可以点击链接学习。https://blog.csdn.net/weixin_44225953/article/details/114594022?fromshare=blogdetail&sharetype=blogdetail&sharerId=114594022&sharerefer=PC&sharesource=m0_74716489&sharefrom=from_linkhttps://blog.csdn.net/weixin_44225953/article/details/114594022?fromshare=blogdetail&sharetype=blogdetail&sharerId=114594022&sharerefer=PC&sharesource=m0_74716489&sharefrom=from_link

https://blog.csdn.net/ChenYiRan123456/article/details/118757279?fromshare=blogdetail&sharetype=blogdetail&sharerId=118757279&sharerefer=PC&sharesource=m0_74716489&sharefrom=from_linkhttps://blog.csdn.net/ChenYiRan123456/article/details/118757279?fromshare=blogdetail&sharetype=blogdetail&sharerId=118757279&sharerefer=PC&sharesource=m0_74716489&sharefrom=from_link

http://www.gsyq.cn/news/76119.html

相关文章:

  • 本地AI模型API网址添加到Open WebUI的方法
  • P14660 你不孤单,我们都在 题解
  • [开源项目] 蜜蜂记账 v2.2 发布:暗黑模式、标签系统、预算管理等 10+ 新功能
  • 【09】Word文档处理工具
  • 谁在主导“芯片战争”
  • 2025深圳CNC加工实力榜:金丰业五金塑胶以精密智造领跑,六家本土技术标杆企业核心优势深度解析
  • 岐金兰意义行为原生理论与AI元人文价值操作系统研究
  • 2025东莞包装材料厂家实力榜:共晟包装以可降解防静电技术领跑,八大环保纸袋品类深度解析
  • chat2db邀请码
  • 2025 最新高端艺术漆品牌 TOP10推荐!技术创新 + 美学表达权威榜单发布,重新定义墙面装饰新高度,行业专业数据,行业口碑榜及选择指南
  • 《密码系统设计》第十一周预习报告
  • 2025康明斯发电机组实力榜:广东三澳新能源科技领衔,六家高潜力本土品牌深度解析
  • 2025东莞汉高实业除蜡水厂家实力榜:六家国产技术代表企业的不锈钢金属工业清洗核心优势深度解析
  • 2025广东山农农业集团蔬菜配送实力榜:六家本土生鲜巨头的新鲜食材与有机食堂供应深度解析
  • will Arab play English again?
  • AI Studio GPU 占用过高导致卡顿的解决办法
  • 详细介绍:【Jenkins】Jenkins配置从节点 - Launch Agent
  • 中旅国际数据库国产化升级:以金仓KES打造安全可控的旅游服务底座 - 实践
  • 2025 最新墙面艺术涂装服务商 / 厂家 TOP5 评测!技术创新 + 美学赋能权威榜单发布,重新定义空间装饰新体验,肌理壁膜 艺术漆 墙面艺术涂装 高端艺术漆
  • 深入解析:回溯剪枝的“减法艺术”:化解超时危机的 “救命稻草”(三)
  • python题库 No.28 shopping
  • 博客4
  • 2025广东鉴正智能设备厂家实力榜:全自动电镀与龙门滚镀设备六家创新技术代表深度解析
  • 20
  • 2025自动提升机厂家实力排行榜:东莞垚林机械以智能高效技术领跑,六家创新本土品牌深度解析
  • Fibonacci 数列求余数和尾递归的一次实践
  • 2025铁氟龙制品厂家实力榜:东莞华氟绝缘材料以创新耐高温膜技术领跑,七类核心产品深度解析
  • 2025广东模胚厂家实力榜:正德钢材以精密淬火工艺领跑,六家高潜力本土品牌技术优势深度解析
  • 意义行为原生:构建人机价值共生的元操作系统——基于岐金兰AI元人文理论体系的阐释
  • 车载测试概念及流程