在这里插入图片描述
三三要成为安卓糕手

零:创建布局文件方式

1:创建步骤

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

ctrl + alt + 空格 设置根元素

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2:处理老版本约束布局

在一些老的工程中,constrainlayout可能没有办法被直接使用,这里需要手动添加依赖

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

implementation 'androidx.constraintlayout:constraintlayout:2.2.1'

这里的版本很多,需要斟酌

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里的implementation libs.constraintlayout点进去其实就是一个声明;

参数解释:group理解成组织标识;name是依赖库的具体名称;最后一个是版本引用。我们也可以自己去定义一个依赖声明,如下图中的test,并加以运用

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

文件已被改变是否以最新的为主,synchronized现在就同步

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

总结:扩展库、第三方库可以帮助我们更好的开发,但不是必备的

一:约束布局源代码

在安卓系统中提供了三种布局方式:LinearLayout(线性布局),RelativeLayout(相对布局),Constrainlayout(约束布局)官方推荐使用第三种布局方式

1:Relative所在位置

解释:<Android API 34, extension level 7 Platform> 是项目创建的时候就会导入进来的一个api,我们的RelativeLayout类就处于其中

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2:Constraint所在位置

可以看到我们的约束布局是在第三方工具库中提供的

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

二:方位约束

1:控件拖拽

所有布局方式都支持控件拖拽,但ConstraintLayout对拖拽的支持最好,

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

拖拽后的空间只支持预览,在程序运行后,并不会真的实现

tools的用法,相当于预览作用,运行时不会在Android手机上显示

如果当前的控件没有约束条件,就会显示在(0,0)的位置;

两点定位:一般需要设置x轴和y轴的坐标的

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2:方位的控制

默认有这句话,就可以添加一些xml的属性

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

textview控件的左边在父控件的左边

    <TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="TextView"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintTop_toTopOf="parent" /><TextViewandroid:id="@+id/textView2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="TextView"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="@+id/root" /><TextViewandroid:id="@+id/textView3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="textView"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent" /><TextViewandroid:id="@+id/textView4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="textView"app:layout_constraintBottom_toBottomOf="@+id/root"app:layout_constraintRight_toRightOf="parent" /><TextViewandroid:id="@+id/textView5"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="TextView5"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" />

效果展示

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

同时设置四个方向,就会四马分尸666,究极拉扯,如textView5

注意

		app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintEnd_toEndOf="parent"
当阅读习惯都是从左往右时,可以等价替换

三:同级控件位置约束

理解清楚方位,就可以控制控件与控件之间的相对位置,写法都是非常灵活的

 <TextViewandroid:id="@+id/textView6"android:layout_width="wrap_content"android:layout_height="100dp"android:background="@color/my_blue"android:text="TextView6"app:layout_constraintLeft_toRightOf="@+id/textView5"app:layout_constraintTop_toBottomOf="@+id/textView5" /><TextViewandroid:id="@+id/textView7"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="TextView7"app:layout_constraintRight_toLeftOf="@+id/textView5"app:layout_constraintTop_toBottomOf="@+id/textView5" />

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    <TextViewandroid:id="@+id/textView8"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="TextView"app:layout_constraintBottom_toBottomOf="@+id/textView6"app:layout_constraintLeft_toRightOf="@+id/textView6"app:layout_constraintTop_toTopOf="@+id/textView6" />

处于中间位置

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

再玩个离谱的兄弟

    <TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/textView9"android:text="textView9"app:layout_constraintLeft_toLeftOf="@+id/textView6"app:layout_constraintRight_toRightOf="@id/textView6"app:layout_constraintTop_toBottomOf="@id/textView6"app:layout_constraintBottom_toBottomOf="@id/textView6"/>

这里其实是基于控件外部为基准,而非内部的文字

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

四:文本基准线约束

我们现在希望以当前文字100为底线对齐,而不是以控件的外围做对齐的

RelativeLayout都是基于当前控件大小进行调整的,constraintlayout可以实现这个场景

1:RelativeLayout对齐方式

(1)代码

<?xml version="1.0" encoding="utf-8"?>
<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:id="@+id/root"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/tv_price"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:background="@color/my_blue"android:text="100"android:textColor="@color/white"android:textSize="56sp" /><TextViewandroid:id="@+id/tv_label"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:layout_toRightOf="@+id/tv_price"android:background="@color/my_blue"android:text="$"android:textColor="@color/white"android:textSize="28sp" /></RelativeLayout>

(2)效果

RelativeLayout都是基于当前控件大小进行调整的,还是做不到嘛呜呜┭┮﹏┭┮

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(3)重要代码分析

相对布局居中方式是centerInParent,约束布局是二/四马拉扯

2:Baseline

有方法

Baseline_toBaselineOf

Baseline_toTopOf 以此类推

(1)关联文本控件

翻译为基准线

    <TextViewandroid:id="@+id/tv_price"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@color/purple"android:text="100"android:textColor="@color/white"android:textSize="56sp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" /><TextViewandroid:id="@+id/tv_label"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@color/purple"app:layout_constraintLeft_toRightOf="@+id/tv_price"app:layout_constraintBottom_toBottomOf="@+id/tv_price"app:layout_constraintBaseline_toBaselineOf="@+id/tv_price"android:text="$"android:textColor="@color/white"android:textSize="28sp" />

控件和控件之间能很好的匹配文字底部对齐

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

(2)关联非文本控件

注意

  • 当使用 toBaselineOf 关联非文本控件时,ConstraintLayout 会将其基线视为 顶部位置(即 top)。因此,对于非文本控件,****toBaselineOf 的效果等同于 toTopOf
<TextViewandroid:id="@+id/tv_label2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@color/purple"app:layout_constraintLeft_toRightOf="@+id/image_wechat"app:layout_constraintBaseline_toBaselineOf="@+id/image_wechat"android:text="$"android:textColor="@color/white"android:textSize="28sp" /><ImageViewandroid:id="@+id/image_wechat"android:layout_width="100dp"android:layout_height="100dp"android:background="@color/my_blue"android:src="@drawable/icon_wechat"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"/>

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

五:角度约束

1:angle和radius

    <TextViewandroid:id="@+id/tv_price"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@color/purple"android:text="100"android:textColor="@color/white"android:textSize="56sp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" /><TextViewandroid:id="@+id/tv_label"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@color/purple"android:text="$"android:textColor="@color/white"android:textSize="28sp"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintCircle="@id/tv_price"app:layout_constraintCircleAngle="45"app:layout_constraintCircleRadius="100dp"app:layout_constraintHorizontal_bias="0.5"app:layout_constraintLeft_toLeftOf="parent" />

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • Angle 角度45度 可以设置为0~360
  • Radius 半径(可以理解成两个控件的中心距离)

尽管添加了xy坐标,但还是以角度约束为准

六:百分比偏移

1:bias

<TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@color/purple"android:text="我是一个水平偏移和竖直偏移"android:textColor="@color/white"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintHorizontal_bias="0.1"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0.2" />

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

总结:只有当两边一起拉扯的时候,偏移量才会生效,这里指的就是start和end都设置

可以给0~1的小数参数,默认值为0.5,就是不左不右,在中间;

app:layout_constraintHorizontal_bias="0.1"  水平
app:layout_constraintVertical_bias="0.1"     竖直

七:View的可见性

1:visibility

    <ImageViewandroid:id="@+id/image_wechat"android:layout_width="100dp"android:layout_height="100dp"android:background="@color/my_blue"android:src="@drawable/icon_wechat"android:visibility="visible"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><TextViewandroid:id="@+id/tv_label"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@color/purple"android:text="$"android:textColor="@color/white"android:textSize="28sp"app:layout_constraintBottom_toTopOf="@id/image_wechat"app:layout_constraintRight_toRightOf="@id/image_wechat"app:layout_goneMarginTop="50dp"app:layout_goneMarginBottom="50dp" />

设置为gone属性就变成右边的图片的效果了

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2:gone

所有的View都有visibility(可见性)属性

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

参数值是否显示在界面上是否占用布局空间是否参与布局计算动态设置代码(Java/Kotlin)
visible✅ 显示✅ 占用✅ 参与view.setVisibility(View.VISIBLE)
invisible❌ 隐藏✅ 占用✅ 参与view.setVisibility(View.INVISIBLE)
gone❌ 隐藏❌ 不占用❌ 不参与view.setVisibility(View.GON

gone不占用空间就会变成一个点,invisible只是单纯看不见,但是最外层的轮廓还在

3:goneMarginTop

变成了一个点之后,此时我们的$符号由于依赖关系也受到了影响,有时候会让我们看不到控件

        app:layout_constraintBottom_toTopOf="@id/image_wechat"app:layout_constraintRight_toRightOf="@id/image_wechat"app:layout_goneMarginRight="50dp"app:layout_goneMarginBottom="50dp" />

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这四句代码非常关键

TextView的底部在image的上面,所以只能用远离底部边距(goneMarginBottom)表现出来的效果就是往上边移了

TextView的底部在image的右边,所以只能用远离右部边距(goneMarginRight),表现出来的效果就是往左边移了

提问:为什么要移动呢?

如果image变成一个点,在左下角,导致依赖image而设置位置的控件位置变化,那不就找不到了嘛~~over

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/90724.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/90724.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/90724.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

S7-200 SMART 数字量 I/O 组态指南:从参数设置到实战案例

在工业自动化控制中&#xff0c;PLC 的数字量输入&#xff08;DI&#xff09;和输出&#xff08;DO&#xff09;是连接传感器、执行器与控制系统的 “神经末梢”。西门子 S7-200 SMART 作为一款高性价比的小型 PLC&#xff0c;其数字量 I/O 的灵活组态直接影响系统的稳定性与响…

可调谐激光器原理与设计 【DFB 与 DBR 激光器剖析】

可调谐激光器原理与设计 【DFB 与 DBR 激光器剖析】1. 可调谐激光器的原理与分类简介2. DFB 与 DBR 激光器结构原理比较2.1 DFB&#xff08;Distributed Feedback Laser&#xff09;激光器2.2 DBR&#xff08;Distributed Bragg Reflector&#xff09;激光器2.3 DFB 激光器与 D…

【前端工程化】前端项目开发过程中如何做好通知管理?

在企业级后台系统中&#xff0c;通知是保障团队协作、监控系统状态和及时响应问题的重要手段。与 C 端产品不同&#xff0c;B 端更关注构建完成、部署状态、异常报警等关键节点的推送机制。 本文主要围绕通知场景、通知内容、通知渠道、自动化集成等方面展开&#xff0c;适用于…

MySQL 9.4.0创新版发布,AI开始辅助编写发布说明

2025 年 7 月 22 日&#xff0c;MySQL 9.4.0 正式发布。 作为一个创新版&#xff0c;MySQL 9.4.0 最大的创新应该就是使用 Oracle HeatWave GenAI 作为助手帮助编写版本发布说明了。难道下一步要开始用 AI 辅助编写数据库文档了&#xff1f; 该版本包含的核心功能更新以及问题修…

基于WebSockets和OpenCV的安卓眼镜视频流GPU硬解码实现

基于WebSockets和OpenCV的安卓眼镜视频流GPU硬解码实现 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff0c;觉得好请收藏。点击跳转到网站。 1. 项目概述 本项目旨在实现一个通过WebSockets接收…

人大金仓 kingbase 连接数太多, 清理数据库连接数

问题描述 kingbase 连接数太多, 清理数据库连接数 [rootFCVMDZSZNST25041 ~]# su root [rootFCVMDZSZNST25041 ~]# [rootFCVMDZSZNST25041 ~]# su kingbase [kingbaseFCVMDZSZNST25041 root]$ [kingbaseFCVMDZSZNST25041 root]$ ksql could not change directory to "/r…

SpringMVC相关基础知识

1. servlet.multipart 大小配置 SpringBoot 文件上传接口中有 MultipartFile 类型的文件参数,上传较大文件时报错: org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded; nested exception is java.lang.IllegalStateExceptio…

HCIP第一次实验报告

一.实验需求及拓扑图&#xff1a;二.实验需求分析根据提供的网络拓扑图和实验要求&#xff0c;以下是对实验需求的详细分析&#xff1a;R5作为ISP:R5只能进行IP地址配置&#xff0c;其所有接口均配置为公有IP地址。认证方式:R1和R5之间使用PPP的PAP认证&#xff0c;R5为主认证方…

React入门学习——指北指南(第五节)

React 交互性:过滤与条件渲染 在前文我们学习了 React 中事件处理和状态管理的基础。本节将聚焦两个重要的进阶技巧 ——条件渲染(根据状态动态显示不同 UI)和列表过滤(根据条件筛选数据),这两者是构建交互式应用的核心能力,能让界面根据用户操作呈现更智能的响应。 条…

学习嵌入式的第二十九天-数据结构-(2025.7.16)线程控制:互斥与同步

以下是您提供的文本内容的排版整理版本。我已根据内容主题将其分为几个主要部分&#xff08;互斥锁、信号量、死锁、IPC进程间通信、管道操作&#xff09;&#xff0c;并使用清晰的结构组织信息&#xff1a;代码片段用代码块格式&#xff08;指定语言为C&#xff09;突出显示。…

COZE官方文档基础知识解读第六期 ——数据库和知识库

一&#xff0c;一键直连数据上传&#xff0c;存储&#xff0c;使用 火山方舟的数据库和知识库的核心&#xff0c;都是基于开源的数据库产品&#xff08;mysql&#xff0c;向量数据库等&#xff09;&#xff0c;将数据库交互的逻辑封装在后端&#xff0c;与前端做耦合&#xff0…

生产环境使用云服务器(centOS)部署和使用MongoDB

部署MongoDB流程1. ​安装MongoDB​版本选择建议​CentOS 7​&#xff1a;推荐MongoDB 4.4.x&#xff08;兼容性好&#xff09;​CentOS 8/9​&#xff1a;建议最新稳定版&#xff08;如6.0&#xff09;&#xff0c;需单独安装mongodb-database-tools安装步骤1.添加官方仓库# 添…

思博伦第二到三层测试仪(打流仪)TestCenter 2U硬件安装及机箱加电_双极未来

&#xff08;1&#xff09;安装板卡&#xff1a;上图中共 4 个红色线框&#xff0c;上边两个红色线条框住的是机箱的左右两侧导轨&#xff0c;下边两条红色 线条框住的是板卡拉手条&#xff08;用于承载板卡PCB的金属板&#xff09;左右两边的边沿。 安装时将拉手条两边的边沿与…

【华为】笔试真题训练_20250611

本篇博客旨在记录自已的笔试刷题的练习&#xff0c;里面注有详细的代码注释以及和个人的思路想法&#xff0c;希望可以给同道之人些许帮助。本人也是小白&#xff0c;水平有限&#xff0c;如果文章中有什么错误或遗漏之处&#xff0c;望各位可以在评论区指正出来&#xff0c;各…

新浪微博APP v14.5.0:连接世界的社交媒体平台

新浪微博APP 是一款广受欢迎的社交媒体应用程序&#xff0c;凭借其强大的功能和丰富的社交生态&#xff0c;成为用户获取信息、表达观点、互动交流的重要平台。最新版 v14.5.0 内置了微博助手 v2.3.0&#xff0c;进一步提升了用户体验和功能多样性。 软件功能 1. 发布微博 用…

静态枚举返回(简单实现字典功能)

枚举缓存策略的实现与应用 通过静态Map缓存枚举类的Class对象&#xff0c;避免每次请求时重复反射加载。核心实现是一个包含枚举类名与对应Class映射的Registry类&#xff1a; public class EnumRegistry {private static final Map<String, Class<?>> ENUM_MAP …

深分页性能问题分析与优化实践

在日常测试工作中&#xff0c;我们经常会遇到分页查询接口&#xff0c;例如&#xff1a; GET /product/search?keyword&pageNum1&pageSize10乍看之下&#xff0c;这样的分页接口似乎并无性能问题&#xff0c;响应时间也很快。但在一次性能压测中&#xff0c;我们复现了…

LeetCode——1957. 删除字符使字符串变好

通过万岁&#xff01;&#xff01;&#xff01; 题目&#xff1a;给你一个字符串&#xff0c;然后让你删除几个字符串&#xff0c;让他变成好串&#xff0c;好串的定义就是不要出现连续的3个一样的字符。思路&#xff1a;首先就是要遍历字符串。我们将要返回的字符串定义为ret&…

Aerospike与Redis深度对比:从架构到性能的全方位解析

在高性能键值存储领域&#xff0c;Aerospike与Redis是两款备受关注的产品。Redis以其极致的单机性能和丰富的数据结构成为主流选择&#xff0c;而Aerospike则凭借分布式原生设计和混合存储架构在大规模场景中崭露头角。本文将从架构设计、数据模型、性能表现、扩展性等核心维度…

Linux命令速查手册

一、命令格式与辅助工具类别符号/命令示例说明基本格式commandls -a /home命令 选项 参数管道符ls -lless重定向>df -h > disk_usage.txt覆盖写入文件>>echo "New" >> notes.txt追加写入文件2>ls non_exist 2> error.txt错误输出重定向快捷…