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

一起Talk Android吧(第五百零八回:多层布局功能)

文章目录

  • 功能介绍
  • 使用方法
  • 示例代码

各位看官们大家好,上一回中咱们说的例子是"图片滤镜ImageFilterView",这一回中咱们说的例子是" 多层布局功能"。闲话休提,言归正转, 让我们一起Talk Android吧!

功能介绍

我们在这里说的多层布局功能表示使用两个布局,一个在前台,另外一个在后台,前台和后台的内容可以同时显示出来,进而实现多层叠加的效果,不过在用户看来仍然是一个布局,完全体会不到多个布局的存在,该功能可以满足在多个布局中复用同一个背景,这点类似面向对象中多个子类共同继承一个父类。

使用方法

  • 创建一个布局页面当作背景页面。
  • 创建一个Activity和它的配套布局文件当做前台页面;
  • 在前台布局中通过include标签引入背景布局;
  • 在这两个布局中都添加TextView组件,组件在每个布局中的位置不一样;

示例代码

介绍完使用方法后,我们通过示例代码来演示,这样更加有说服力:

//前台的布局代码
<?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:background="@color/purple_700"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".activity.ActivityConstrilayout"><include layout="@layout/activity_background"></include><TextViewandroid:text="This the Foreground Top Title"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintVertical_bias="0.5"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintBottom_toBottomOf="parent"android:layout_width="wrap_content"android:layout_height="wrap_content"></TextView><TextViewandroid:text="This the Foreground Bottom Title"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintVertical_bias="0.7"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintBottom_toBottomOf="parent"android:layout_width="wrap_content"android:layout_height="wrap_content"></TextView>
</androidx.constraintlayout.widget.ConstraintLayout>//后台的布局代码
<?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:background="@color/purple_200"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".activity.ActivityBackground"><TextViewandroid:text="This is background Top Title"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintVertical_bias="0.1"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintBottom_toBottomOf="parent"android:layout_width="wrap_content"android:layout_height="wrap_content"></TextView><TextViewandroid:text="This is background Bottom Title"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintVertical_bias="0.9"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintBottom_toBottomOf="parent"android:layout_width="wrap_content"android:layout_height="wrap_content"></TextView>
</androidx.constraintlayout.widget.ConstraintLayout>

上面代码中创建了两个布局,每个布局中包含两个TextView,一共四个。它的们位置都不一样。把这两布局组合后四个TextView组件都可以被看到,这样就达到了布局叠加的效果。虽然布局叠加了,但是布局中的组件并没有因为布局的叠加而发生遮挡现象。我在这里就不演示具体的效果了,建议大家自己动手去实践。

注意:前台和背景使用的布局类型必须是约束布局,换成其它布局后没有效果。下面是我调试的结果:

  • 如果背景和前台是两个线性布局,只显示背景布局中的组件,布局颜色是背景的布局颜色 ;
  • 如果背景是约束布局,前台是线性布局,只显示背景中的组件,布局颜色是背景的布局颜色 ;
  • 如果背景和前台是两个约束布局,背景和前台上的组件都会显示,不过布局颜色是背景的布局颜色 ;

从中可以看到:

  • 对于布局的颜色来说,不论前台和背景是哪种类型的布局,如果这两个布局都设置了背景颜色,那么只会显示背景布局中设置的颜色;
  • 对于布局中的组件来说,只有前台和后台都使用了约束布局才能实现布局叠加功能,而且不会遮挡布局中的组件。

看官们,关于"多层布局功能"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

http://www.lryc.cn/news/22012.html

相关文章:

  • 丁小喜の兵器谱(学生管理系统)
  • linux:字符串拷贝的五种方法:使用指针下标,指针变量加偏移量,指针变量自加等
  • cesium常用方法汇集(工具篇)
  • 分布式一致性与共识算法(一)
  • C++---最长上升子序列模型---怪盗基德的滑翔翼(每日一道算法2023.2.27)
  • Python 之 Pandas 文件操作和读取 CSV 参数详解
  • 微服务的异步通信技术RabbitMQ
  • Word处理控件Aspose.Words功能演示:使用 C++ 在 Word (DOC/DOCX) 中添加或删除水印
  • chatGPT模型原理
  • 四、阻塞队列
  • 企业电子招投标采购系统源码之登录页面
  • SQL零基础入门学习(十三)
  • Java实现简单KV数据库
  • 【Spark分布式内存计算框架——Spark Streaming】5. DStream(上)
  • Spring系列-9 Async注解使用与原理
  • Python自动化测试实战篇(6)用PO分层模式及思想,优化unittest+ddt+yaml+request登录接口自动化测试
  • Linux 进程:父子进程
  • Unity 之 实现读取代码写进Word文档功能实现 -- 软著脚本生成工具
  • Typora图床配置:Typora + PicGo + 阿里云OSS
  • 二进制搭建以太坊2.0节点-2023最新详细版文档
  • 如何简化跨网络安全域的文件发送流程,大幅降低IT人员工作量?
  • 带你深入了解c语言指针后续
  • 借助Intune无感知开启Bitlocker
  • 零基础该如何转行Python工程师?学习路线是什么?
  • Go项目(商品微服务-1)
  • 机器学习——集成学习
  • VS编译系统 实用调试技巧
  • 【华为OD机试模拟题】用 C++ 实现 - GPU 调度(2023.Q1)
  • 腾讯前端必会react面试题合集
  • Linux搭建SVN服务器,并内网穿透实现公网远程访问