【任务描述】

本任务要求使用相对布局或约束布局以及相应的控件完成智慧园区监控系统界面开发

一、相对布局(RelativeLayout)概述

相对布局(RelativeLayout)是一种根据父容器和兄弟控件作为参照来确定控件位置的布局方式。

使用相对布局,需要将布局节点改成RelativeLayout,基本格式如下:


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity">....</RelativeLayout>

根据父容器定位

在相对布局中,可以通过以下的属性的组合让控件处于父容器左上角、右上角、左下角、右下角、上下左右居中,正居中等九个位置。属性如下:

android:layout_alignParentLeft="true" 父容器左边

android:layout_alignParentRight="true" 父容器右边

android:layout_alignParentTop="true" 父容器顶部

android:layout_alignParentBottom="true" 父容器底部

android:layout_centerHorizontal="true" 水平方向居中

android:layout_centerVertical="true" 垂直方向居中

android:layout_centerInParent="true" 水平垂直都居中

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:text="Button1" /><Buttonandroid:id="@+id/button3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:text="Button2" /><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:text="Button3" /><Buttonandroid:id="@+id/button4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:text="Button4" /><Buttonandroid:id="@+id/button5"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_alignParentRight="true"android:text="Button5" /><Buttonandroid:id="@+id/button6"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:text="Button6" /><Buttonandroid:id="@+id/button7"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:text="Button7" /><Buttonandroid:id="@+id/button8"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:layout_alignParentRight="true"android:text="Button8" /><Buttonandroid:id="@+id/button9"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_centerHorizontal="true"android:text="Button9" />
</RelativeLayout>

三、根据兄弟控件定位

在相对布局中,还支持通过已确定位置的控件作为参考来确定其他控件的位置,以下的属性让的组合让控件处于另外控件左上角、右上角、左下角、右下角、正上方、正下方、正左方、正右方等位置。属性如下:

android:layout_toLeftOf="@+id/button1" 在button1控件左方

android:layout_toRightOf="@+id/button1" 在button1控件右方

android:layout_above="@+id/button1" 在button1控件上方

android:layout_below="@+id/button1" 在button1控件下方

android:layout_alignLeft="@+id/button1" 与button1控件左边平齐

android:layout_alignRight="@+id/button1" 与button1控件右边平齐

android:layout_alignTop="@+id/button1" 与button1控件上边平齐

android:layout_alignBottom="@+id/button1" 与button1控件下边平齐

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:text="Button1" /><Buttonandroid:id="@+id/button3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_toLeftOf="@id/button"android:layout_alignBottom="@id/button"android:text="Button2" /><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_toRightOf="@id/button"android:layout_alignBottom="@id/button"android:text="Button3" /><Buttonandroid:id="@+id/button4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_above="@id/button"android:layout_alignLeft="@id/button"android:text="Button4" /><Buttonandroid:id="@+id/button5"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/button"android:layout_alignLeft="@id/button"android:text="Button5" /></RelativeLayout>

二、ConstraintLayout概述

ConstraintLayout是Android官方在2016年Google的I/O大会推出的一种可以灵活控制子控件的位置和大小的新布局方式,也是目前Android的几大布局中功能最强大的布局。在最新版的Android Studio中,创建布局文件的默认根元素都是ConstraintLayout了。

ConstraintLayout优点

ConstraintLayout之所以成为目前Android开发中主流的布局,除了官方建议使用ConstraintLayout外还有以下几个方面的优势

功能强大,ConstraintLayout几乎能实现其他布局所有的功能

能减少布局层次的嵌套,有性能的优势

可视化操作的增强,大部分界面用ConstraintLayout都能通过可视化编辑区域完成

二、ConstraintLayout基础篇

2.1 基础操作

在Android Studio中默认的布局方式是约束布局,在约束布局中添加控件非常简单,只需要从左侧的Palette区域拖动控件到中间的界面编辑区域即可。

在约束布局中,点中任意一个控件,该控件的上下左右四个方向各会出现一个圆圈,该圆圈代表可以添加的约束。

当把鼠标移动到圆圈上,按住鼠标左键,然后移动鼠标到父布局的上下左右任意边缘再松开鼠标即可给该方向添加约束,添加完约束后该圆圈会由空心圆变成实心圆,同时控件也会移动到该父布局添加约束的方向的边缘。

当给一个控件上下方向都添加约束后该控件会在垂直方向居中,同样的给一个控件左右方向都添加约束该控件会在水平方向居中。

如果想给一个控件去掉约束,选中该控件后,在右上角Layout区域,点击该方向上的×符号即可去掉该方向上的约束

也可以拖动Layout区域的水平条和垂直条来控制左右方向和上下方向两边约束的比例,该值越小,控件会越靠左和上。

给控件某个方向添加约束后该控件默认会紧靠该方向约束的父布局边缘,可以设置控件在Layout区域设置该方向与父布局的边缘间距。

2.2 控件间添加约束

在约束布局中,除了可以给一个控件将约束添加到父布局边缘,也可以将一个控件的约束添加到另外一个控件上,添加约束的方法跟添加都父布局一样。当给一个控件左边添加约束到另外一个控件左边,该控件左边缘会平齐另外一个控件的左边缘。给一个控件的下边缘添加约束到另外一个控件的上边缘,该控件会紧贴另外一个控件的上边缘

如果给一个控件左右两边都添加约束到另外一个控件的两边,这两个控件的大小又不一样,那么该两个控件的中轴线会平齐。

2.3 约束布局xml代码实现

用可视化区域来编写布局虽然比较简单,但是对于一些布局的微调用xml代码会更快,要熟练掌握约束布局,学会用xml代码来编写约束布局也是必备的技能。

给父布局添加约束

app:layout_constraintBottom_toBottomOf="parent" 底部约束

app:layout_constraintEnd_toEndOf="parent" 右边约束

app:layout_constraintStart_toStartOf="parent" 左边约束

app:layout_constraintTop_toTopOf="parent" 顶部约束

这里的Strart和End 换成Left和Right也可以。

2.4 Chains链

在LinearLayout布局中weight属性能够实现子控件讲父布局的控件按比例分配,在ConstraintLayout 中通过Chains链也能够实现相同的功能,而且Chains链的功能比LinearLayout布局中weight属性功能更加强大。

Chains链的基本用法如下:选中多个控件,右键Chains->Create Horizontal Chains 即可将父布局的剩余空间进行均匀分布。

Chains链对父控件的剩余空间有三种分配方式,即Spread、spread inside、packed,默认值是Spread即将控件包括第一个控件和最后一个两边均匀分配

2.5 Guideline

Guideline是ConstraintLayout布局里面的一个工具类,其作用相当于一条辅助线,默认不可见,可以用于辅助布局

  • layout_constraintGuide_percent :按照比例设置辅助线的位置

  • layout_constraintGuide_begin:按照值设置辅助线的位置

Guideline辅助线的位置既可以按照百分比来设置,也可以按照值来设置。

三、园区监控系统界面设计

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><androidx.constraintlayout.widget.Guidelineandroid:id="@+id/guideline4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"app:layout_constraintGuide_percent="0.34" /><ImageViewandroid:id="@+id/imageView"android:layout_width="393dp"android:layout_height="244dp"app:layout_constraintBottom_toTopOf="@+id/guideline4"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"tools:srcCompat="@tools:sample/avatars" /><Viewandroid:id="@+id/view"android:layout_width="56dp"android:layout_height="54dp"android:layout_marginTop="88dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.498"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="@+id/guideline4" /><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="右"app:layout_constraintBottom_toBottomOf="@+id/view"app:layout_constraintStart_toEndOf="@+id/view"app:layout_constraintTop_toTopOf="@+id/view" /><Buttonandroid:id="@+id/button2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="左"app:layout_constraintBottom_toBottomOf="@+id/view"app:layout_constraintEnd_toStartOf="@+id/view"app:layout_constraintTop_toTopOf="@+id/view" /><Buttonandroid:id="@+id/button3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="下"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/view" /><Buttonandroid:id="@+id/button4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="上"app:layout_constraintBottom_toTopOf="@+id/view"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent" /><Buttonandroid:id="@+id/button5"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="36dp"android:text="开始监控"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.498"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/button3" /></androidx.constraintlayout.widget.ConstraintLayout>

任务3、监控界面设计相关推荐

  1. c语言如何控制上位机界面大小,电机上位机控制及界面设计参考.doc

    电机上位机控制及界面设计参考 PAGE 1 电机上位机控制及界面设计 吴牛俊 (自动化与电气工程学院 指导教师:周克宁) 摘要:随着计算机.电子.通讯技术的飞速发展,人们对于车间现场设备的运行管理控制 ...

  2. java图形界面的监听_非专业码农 JAVA学习笔记 用户图形界面设计与实现-所有控件的监听事件...

    用户图形界面设计与实现-监听事件 System.applet.Applet (一)用户自定义成分 1.绘制图形 Public voit piant(Ghraphics g){  g.drawLine等 ...

  3. 界面设计方法 (1) — 4. 看板功能的设计

    看板功能,在系统中有非常多的应用,它是用界面做载体,利用数据.图标.曲线.图像等各类形式来展示已完成数据处理结果或是其他信息.常见的有如:系统的门户.导航菜单.各种各样的数据监控仪表盘.领导驾驶舱等. ...

  4. 界面设计方法 (1) — 2.活动功能的设计

    前文已介绍过了,业务功能分为4大类,其中"活动功能"是界面设计中工作量最大的部分,每个活动功能都是客户一个/类实际工作在系统中的映射,客户对包括对业务处理.管理控制方面的需求.优化 ...

  5. 生鲜配送ERP系统_对商品模块数据模型与界面设计的思考【Java 开源版】杭州生鲜配送系统_升鲜宝_SaaS全链路生鲜供应链管理系统_升鲜宝

    生鲜配送ERP系统_对商品模块数据模型与界面设计的思考及简要分析[Java 开源版]杭州生鲜配送系统_升鲜宝_SaaS全链路生鲜供应链管理系统_升鲜宝 一直在研究与改造自己的生鲜配送系统,越来越觉得后 ...

  6. 图形化界面设计软件简要介绍

    图形化界面设计软件简要介绍 [摘要]:面向使用者的系统工程设计,其目的是要准确.快速地在设计者和使用者之间传递信息和实现功能,也是优化产品性能来适应大众的操作能力,减轻使用者的认知负担.成功的系统工程 ...

  7. 软件界面设计原则(转)

    一:遵循一致的准则,确立标准并遵循 无论是控件使用,提示信息措辞,还是颜色.窗口布局风格,遵循统一的标准,做到真正的一致. 这样得到的好处: 1:使用户使用起来能够建立起精确的心里模型,使用熟练了一个 ...

  8. 【CV/Matlab系列】基于matlab GUI的视频监控界面

    DATE: 2020.10.18 updated at 2022.04.23: 界面上增加报警提示功能 文章目录 1.前言 2.视频监控界面 2.1.初始化界面 2.2.人脸检测和计数功能 2.3.监 ...

  9. Linux人机界面用什么软件,浙江Linux人机界面品牌,人机界面界面设计品牌

    人机界面也称用户界面或使用者界面,是用户与计算机进行交流的媒介.恰当的人机界面能帮助操作人员更好的完成数据输入.读取工作,提高工作效率,对系统的运行很有好处.所以为了人机界面的长远发展,我们将人机界面 ...

最新文章

  1. python3 32位_Python3.8.2安装教程
  2. JavaScript学习笔记之数组(二)
  3. 技术交流:老刘说NLP技术公众号开通
  4. 矫情的C++——不明确行为(undefined behavior)
  5. hdfs开机启动流程
  6. android studio2.3.6,Android Studio 2.3 问题汇总 - 解决一切障碍,为了更好的时代
  7. python 扫描枪_获取键盘输入或者USB扫描枪数据
  8. python篇 006-- pycharm vsc 编写python(对比浅析混合使用) pycharm篇
  9. System.Activator类
  10. Android之bugly使用
  11. 怎么文字扫描识别?看完这篇你就会了
  12. 基恩士XG-XvisionEditor程序的上传与下载
  13. mysql数据库锁 栅栏,如何使用MySQL查找多边形地理围栏中包含的点
  14. 15-Puzzle Problem
  15. 未能打开文稿,文本编码不适用,Mac无法打开txt文档的解决方法
  16. 补齐 windows 运行库和运行环境(VC++、DirectX、.Net)
  17. Windows下U盘安装Ubuntu双系统
  18. airpods pro无法使用Windows电脑充电的解决方法
  19. 职场上,英文流利会有额外收益吗?
  20. 好东西来了!2017云栖大会300+份重磅资料下载

热门文章

  1. oracle 定义atp规则,ATP新积分规则详解
  2. 当谈论工程师文化时我们在谈些什么
  3. 算法与数据结构基础<一>----线性查找法
  4. Linux_Linux_sort 命令
  5. 基于matlab的gui设计与实现,毕业设计基于MATLAB GUI的数字图像处理的设计与实现(V2.1)...
  6. php gb28181,EasyGBS国标流媒体服务器GB28181国标方案安装使用文档
  7. ABB AC500 - Programmable Logic Controllers PLCs可编程逻辑控制器
  8. 汽车专用示波器检测喷油嘴(汽油机)波形信号及分析
  9. c语言H文件意思,C语言中 *.c和*.h文件的区别!
  10. 【蓝桥杯冲刺 day23】第二点五个不高兴的小明 --- O(n^2)优化思路