目录
3.布局管理器
3.1线性布局(LinearLayout)
线性布局(LinearLayout)主要以水平或垂直方式来显示界面中的控件。当控件水平排列时,显示顺序依次为从左到右,当控件垂直排列时,显示顺序依次为从上到下。
特点:
各个子元素彼此连接,中间不留空白;线性布局可以将子视图按垂直或水平方向排列。
使用 android:orientation 属性可以设置线性布局的排列方向(垂直或水平)。
每个子视图可以使用 layout_weight 属性来分配剩余空间。设置线性布局的对齐方式 gravity、left、right、center搭配,共有九种对齐方式。线性布局gravity的默认值是left|top左上,右上对齐right|top。
适用场景:
当需要简单地将子视图按顺序排列时,使用线性布局是最方便的选择。适合用于垂直或水平的按钮排布、简单的表单等。
3.2约束布局(ConstraintLayout)
当需要复杂布局或希望减少嵌套布局时,约束布局是最佳选择。
特点:
约束布局是一个功能十分丰富和强大的布局,它可以通过设置约束来灵活地摆放子视图,也可以减少嵌套布局,提高性能。可以在Android Studio中通过拖拽和设置约束来设计界面。
适用场景:
适用于需要灵活控制视图位置的界面,如动态调整视图位置的界面。为了解决复杂的布局,嵌套过多布局问题。ConstraintLayout使用起来比RelativeLayout更灵活,性能更出色,可以按照比例约束控件位置和尺寸,更好适配屏幕大小的不同机型。
3.3表格布局(TableLayout)
特点:
表格布局将子视图按行和列排列,类似于HTML的表格。
使用 TableRow 元素定义行,每个 TableRow 中可以包含多个视图。Tablelayout类以行和列的形式对控件进行管理,每一行为一个TableRow对象,或一个View控件。当为TableRow对象时,可在TableRow下添加子控件,默认情况下,每个子控件占据一列。当为View时,该View将独占一行。数据化的存放更合理。TableLayout包裹TableRow(行数),TableRow包裹View(列数)shrinkColumns属性:当TableRow里的空间布满布局的时候,指定列自动延伸填充可用部分。当TableRow里控件还没布满不觉,不起作用。可收缩列。stretchColumns属性:设置可伸展的列,该列可以向行方向伸展,最多可占据一整行。collapseColumns属性:设置要隐藏的列。
适用场景:
适合用于需要按行和列组织视图的场景,比如日历、数据表格等。
3.4帧布局(FrameLayout)
这个布局直接在屏幕上开辟出一块空白的区域,往里面添加控件的时候,会默认把他们放到这块区域的左上角,而这种布局方式却没有任何的定位方式,所以它应用的场景并不多;帧布局的大小由控件中最大的子控件决定,如果控件的大小一样大的话,那么同一时刻就只能看到最上面的那个组件,后续添加的控件会覆盖前一个,虽然默认会将控件放置在左上角,但是可以通过layout_gravity属性,指定到其他的位置。
特点:
帧布局简单地将所有子视图堆叠在一起,后添加的视图会覆盖在前面的视图之上。
适用于显示单个子视图或需要重叠视图的场景。
适用场景:
用于需要一个简单的容器来显示一个视图或需要在视图上叠加其他视图的情况,例如相机预览界面。
3.5相对布局(RelativeLayout)
特点:
相对布局允许子视图相对于父容器或其他子视图的位置进行定位。
可以通过 layout_alignParent、layout_toLeftOf 等属性来控制视图的位置。
适用场景:
当需要相对定位视图时,相对布局是一个不错的选择。适用于需要相对定位的复杂布局,比如按钮相对于文本视图的排列。
4.常用控件
4.1 TextView与EditText
TextView是用于显示文字(字符串)的控件,可在代码中通过设置属性改变文字的大小、颜色、样式等功能。
EditText继承自TextView,可以进行编辑操作,将用户信息传递给Android程序。还可以为EditText控件设置监听器,用来测试用户输入的内容是否合法。
4.2 Button
Button是按钮,是用于响应用户的一系列点击事件,使程序更加流畅和完整。
Button点击事件实现方式有使用onClick属性的方式、使用自定义类继承View.OnClickListener方式等。
4.3 RadioButton
RadioButton为单选按钮,它需要与RadioGroup配合使用,提供两个或多个互斥的选项集。 RadioGroup是单选组合框,可容纳多个RadioButton,并把它们组合在一起,实现单选状态。
RadioGroup监听事件:利用setOnCheckedChangeListener()监听RadioGroup控件状态,通过if语句判断被选中RadioButton的id。
4.4 CheckBook与ImageView
CheckBox表示复选框,它是Button的子类,用于实现多选功能,通过android:checked属性指定CheckBox控件是否选中的状态。
ImageView是视图控件,它继承自View,其功能是在屏幕中显示图像。ImageView类可以从各种来源加载图像(如资源库或网络),并提供缩放、裁剪、着色(渲染)等功能。
5.Activity与Intent
5.1 Activity
Activity有四种启动模式:
创建一个活动(Activity)步骤如图:
5.2 Intent
例如:
5.3 Fragment
6.高级控件
6.1按钮点击事件
实现方法:
使用setOnClickListener 方法为按钮设置点击事件监听器。
在监听器中实现点击逻辑。
案例描述:
在一个简单的登录页面,当用户点击“登录”按钮时,触发相应的事件来验证用户输入。
反思与改进:
通过查阅官方文档和示例代码,理解了事件监听机制。
6.2列表项点击事件
Spinner 组件是一种以下拉表的形式供用户快速进行数据输入的下拉控件,可以通过组件的 entries 属性绑定数据源,也可以通过数据适配器加载数据。
实现方法:
为 ListView 或 RecyclerView 设置点击事件监听器。
在监听器中处理列表项点击事件。
案例描述:
在一个任务管理应用中,用户点击某个任务项时,可以查看任务详情。
反思与改进:
通过实验和调试,优化了点击事件的响应速度。
6.3滑动操作
滚动视图分为垂直方向和水平方向 两类,其中垂直滚动视图名为ScrollView,水平滚动视图名为HorizontalScrollView。
案例描述:
在一个图片浏览应用中,用户可以左右滑动来浏览不同的图片。
6.4进度条
进度条(ProgressBar)是UI界面中一种实用的UI组件。它用于显示一个耗时操作的百分比。
6.5选项卡
Android 选项卡由TabHost、TabWidget和任意布局三个控件组成;
- TabHost:作为选项卡窗口的窗口容器,包含两个子对象:标签和内容;
- TabWidget:标签,id必须为@android:id/tabs,当用户选择一个选项卡时,该对象向父容器TabHost发送一条消息,告诉它切换所显示的页面;
- 任意布局:内容,id必须为@android:id/tabcontent,显示该页面的内容。
6.6 文本框
自动完成文本框是一种用户界面元素,它通过预测用户可能想要输入的内容来自动填充部分或全部文本。这种功能通常用于表单、搜索引擎和其他需要用户输入文本的应用程序中。
6.7视图
6.7.1滚动视图
滚动视图是一种常见的用户界面组件,它允许用户通过滚动来查看超出屏幕显示范围的内容。在移动设备和网页设计中,滚动视图尤为重要,因为它们可以有效地管理有限的屏幕空间,使得用户可以访问更多的信息或内容。
6.7.2列表视图
列表视图是一种常见的用户界面组件,用于展示一系列有序的数据项。它通常用于显示文本、图片或者其他类型的数据,并且用户可以通过滚动浏览这些数据项。在移动应用、网站和桌面软件中,列表视图广泛应用于展示菜单、产品目录、聊天记录等信息。
6.7.3网格视图
网格视图(GridView)是一种图形控件,用于以网格形式展示数据。它通常用于展示图像、图标或其他类型的数据项,并且用户可以通过滚动浏览这些数据项。网格视图在移动应用、网站和桌面软件中广泛应用于展示产品目录、图片画廊、游戏棋盘等内容。
7.菜单与对话框
7.1 选项菜单
选项菜单是一种常见的用户界面组件,用于提供快捷操作,提高应用程序的易用性和用户满意度。选项菜单通常用于一些常见的场景,例如复制、粘贴、删除、设置、搜索或分享等操作。在Android中,菜单项通常通过在XML中定义菜单资源,然后在对应的Activity中重写方法来实现。这允许开发者定义菜单的外观和行为。
实际案例:
假设我们要在设置页面添加一个“保存、设置、退出”菜单项。
7.2对话框
可以在屏幕上弹出一个小窗口,显示提示信息、用户选择项或请求用户输入数据。其作用是提供一种简单而直观的用户交互方式,让用户可以快速地做出决定或输入数据,从而方便用户操作应用程序。Android提供了AlertDialog.Builder类来构建标准对话框。开发者可以通过设置标题、消息、按钮及按钮点击监听器来自定义对话框的行为。