首页
学习
活动
专区
圈层
工具
发布

代码实验室--带你一步步理解使用 ConstraintLayout

约束系统概览 布局引擎使用每一个控件指定的约束确定他们在布局中的位置. 你可以手动指定约束, 也可以使用 Android Studio 布局编辑器推理自动指定....约束系统的规则 除了以下情况外, 布局中控件的锚点可以连接到其它控件的任意锚点. 不同轴上的锚点, 例如左边和上边的锚点不能相连....假定我们需要最终布局中 TextView 在 ImageView 下面. 为了实现, 我们可以如下所示创建一个 TextView 上锚点和 ImageView 底锚点之间的约束....删除约束 使用这个 显示在布局中的删除约束按钮以删除选中控件上的 所有 约束. 要删除单个约束, 点击设定了该约束的锚点 如果你打算删除布局中的所有约束, 使用菜单图标....继续, 从布局中删除 TextView 创建 ImageView 底锚点和容器底部的约束 UI 生成器应该看起来是这样 Inspector 显示出控件控件在一个方形区域的中间.

3.5K60

如何优化 Android 的布局性能?如何使用 ConstraintLayout 来减少嵌套层级?

三、高效布局组件使用 ViewStub 延迟加载延迟初始化不立即显示的布局(如错误页、占位符): android:id="@+id/stub_network_error...五、进阶优化技巧硬件加速在 AndroidManifest.xml 中启用: android:hardwareAccelerated="true" >对自定义 View...使用 merge 标签:在根布局为 ConstraintLayout 时,用 消除冗余父容器。延迟加载:对非立即显示的视图使用 ViewStub。...六、总结ConstraintLayout 通过约束关系和辅助组件,能够在单层布局中实现复杂 UI,是减少嵌套的首选方案。关键在于:熟练使用 chains、Guideline、Barrier 等特性。...在简单布局中,避免过度使用 ConstraintLayout(如单按钮场景可直接用 FrameLayout)。

2.1K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Android 性能优化】布局渲染优化 ( GPU 过度绘制优化总结 | CPU 渲染过程 | Layout Inspector 工具 | View Tree 分析 | 布局组件层级分析 )

    五、 实际的界面 UI 布局组件层级分析 一、 GPU 过度绘制优化总结 ---- 前两篇博客回顾 : 【Android 性能优化】布局渲染优化 ( 过渡绘制 | 自定义控件过渡绘制 | 布局文件层次深..., 删除主题背景 ; 【Android 性能优化】布局渲染优化 ( 过渡绘制 | 背景设置产生的过度绘制 | Android 系统的渲染优化 | 自定义布局渲染优化 ) 博客中讲解了布局文件中的背景如何处理..., 自定义组件在 GPU 渲染过程中过度绘制如何进行处理 ; 还有 Android 系统针对 CPU 传递数据到 GPU 进行的优化 ; 耗时操作总结 : 在 【Android 性能优化】布局渲染优化...( CPU 与 GPU 架构分析 | 安卓布局显示流程 | 视觉与帧率分析 | 渲染超时卡顿分析 | 渲染过程与优化 ) 博客中分析了图像渲染的 16 毫秒过程中 CPU 渲染 CPU 传递数据到 GPU...Android Studio 中 , 点击菜单栏 “Tool” , 选择 “Layout Inspector” 工具 , 即可打开该工具 ; ③ 选择进程 : 在弹出的 “Choose Process

    2.8K20

    【约束布局】ConstraintLayout 约束布局 ( 简介 | 引入依赖 | 基本操作 | 垂直定位约束 | 角度定位约束 | 基线约束 )

    约束布局 更加灵活 , 并且 ConstraintLayout 能在 Android Studio 布局编辑器中进行编辑 ; 5.可视化操作 : 在 布局编辑器 工具中 , 可以设置所有的属性 , 该...约束 简介 ( 1 ) 约束个数要求 ConstraintLayout 布局中 单个组件 约束个数要求 : 1.约束要求 : 在 ConstraintLayout 中 设置 View 的位置 , 至少为...约束设置 与 显示位置 : 1.编辑器位置 : 向布局编辑器中拖入 组件 , 如果不为其设置约束 , 他就会呆在鼠标松开的位置 ; 2.显示位置 : 如果 在 ConstraintLayout..., 在布局编辑器中 其 在 A 组件的下方显示 , 但是 在设备上运行时 , C 组件 左右 与 A 组件对齐 , 但是其显示在 屏幕的 最顶端 , 因为 C 组件没有垂直方向的约束 ; 4....: 1.转换布局 : ① 进入布局界面 : 在 Android Studio 打开布局文件 , 选择 Design 视图 ; ② 转换操作 : 打开 “Component Tree” 界面 , 右键点击

    9.2K41

    【Jetpack】Lifecycle 架构组件 ( 系统组件与普通组件解耦 | Lifecycle 解耦系统组件与普通组件 | 解耦服务组件与普通组件 | 监听应用程序生命周期 )

    Android Studio 中搜索并添加依赖 3、布局文件属性排序 4、代码实现 ① LifecycleService 组件 ② LifecycleObserver 业务逻辑 ③ AndroidManifest.xml...组件生命周期 发生改变时 , 可以 通知 普通组件 执行某种操作 ; 如 : 显示的自定义 UI 组件 , 要随着 Activity 组件生命周期的变化 , 进行相应改变 , 当 界面被覆盖 也就是...onPause 时 执行某种改变 , 当界面进入后台 onStop 时 , 执行某种改变 ; 在 Android 应用系统架构 中 , 总是希望 Android 组件 越小越好 , 不要把 Activity...组件就是 系统组件 , 在 Activity 中使用到的 UI 组件 , 就是实际实现业务逻辑的 普通组件 ; 实现一个功能 : 监控页面的打开时间 , 将页面打开时间直接显示在页面中 ; 1、传统实现方式...的生命周期函数回调时 , 会 自动触发回调 LifeCycleObserver 接口函数 ; 这种实现方式 , 解耦 了 UI 组件 与 Android 系统组件 ; ① 自定义 UI 组件 在下面的自定义组件中

    1.2K20

    Android ConstraintLayout百分比布局使用详解

    Android ConstraintLayout是谷歌推出替代PrecentLayout的组件。...使用小技巧: Q:在约束布局中,wrap_content与0dp的区别: A: wrap_content:以内容的长度为准,一些比例属性会失效。 0dp:以控件的长度为准。...比如:以上场景,或者DimensionRatio,或者Percent等属性时。 Q:为什么约束布局刷新UI会卡顿 A:因为锚点没有设置完整,导致整个布局重新计算。...使用百分比布局时,View必须要设置上下左右四个锚点,如果不设置就像射线一样,都不知道多大,如何百分比呢?...当锚点是parent(也就是屏幕),因为分辨率不一样,使用百分比的view占的位置、大小肯定是不相同的,720的50%等于360,而1080的50%是等于590,仅仅是看起来位置相同,实际并不相同,所以当百分比与固定大小结合实现布局时

    6.9K10

    【JetPack】ViewBinding 视图绑定组件 ( 启用模块 | 视图绑定定制 | 绑定类名称生成规则 | 绑定类字段生成规则 | 绑定类获取根视图 | 绑定类获取布局组件 )

    组件绑定在 Activity 等界面的 Java / Kotlin 代码中 , 可以在代码中获取这些组件对象 ; II ....; 定制不生成绑定类的情况 : 在布局根标签中配置 tools:viewBindingIgnore=“true” 属性 , 即不为该布局生成绑定类 ; V ....中显示该布局 */ setContentView(binding.getRoot()); X ....( ViewBinding ) 只绑定布局文件中定义了 id 属性的组件 * 那些没有定义 id 属性的组件不绑定 * * 只要在 build.gradle 中启用了 视图绑定 ,...* 那么系统会默认为每个 XML 布局文件生成一个绑定类 ; * ( 可以在布局中设置 tools:viewBindingIgnore="true" 不生成绑定类 ) * *

    2K10

    Android Studio 中的 Motion Editor 用法详解

    Motion Editor 中运行的动画 Motion Editor 是 Android Studio Layout Editor (布局编辑器) 的一个扩展,当您在一个包含 MotionLayout...您可以使用已在布局编辑器中所熟知的交互方式来编辑布局和 Motion Scene 文件,并可以直接在 Android Studio 预览界面中对动画效果进行预览。...,它有三种显示模式: 选中 Overview 面板中 Motion Layout 时的模式 选中 Overview 面板中 ConstraintSet 时的模式 选中 Overview 面板中 Transition...在 Attribute 面板中预览 Constraint 可视化效果 当您想对某个视图属性上添加动画效果时,而该属性却不属于 ConstraintLayout 或者 MotionLayout API (...比如背景色) 时,可以在 Attribute 面板中创建自定义属性。

    3.3K10

    炫酷!MotionLayout 使用介绍 (第一章)

    何时使用MotionLayout 我们设想到的使用MotionLayout的使用场景:当你需要移动,缩放或者动画实际的UI组件(按钮,标题栏等)来提供与用户的互动时。...ConstraintSets 通常ConstrainSet将所有游戏布局文件中的所有的位置信息规则; 你可以使用多个ConstrainSet,你可以决定将那些规则应用到布局中,在应用时这些查看不会被重建...需要你使用ConstrainLayout创建³³两个ConstrainSet一个的英文初始位置(组件在屏幕的左面)一个是结束位置(组件在屏幕的右边) 初始位置: [1240] <?...这样做有有以下好处: 一个文件可以包含多个 ConstraintSet 除了已有的功能外,还可以处理其他的属性和自定义属性 面向未来:即将到来的Android Studio MotionEditor可能只支持自包含...: 自定义属性,图片变换,关键帧(第二部分) 在现有的布局中使用MotionLayout(CoordinatorLayout,DrawerLayout,ViewPager)(第三部分) 关于关键帧的所有

    4.6K00

    自律给你自由——Android设计布局的新姿势

    1ConstraintLayout基本界面 更新Android Studio 2.2之后,更新了布局设计器,同时,引人了ConstraintLayout,这一布局,旨在降低布局层级,其主要界面如下所示...在第一次引人ConstraintLayout的时候,Android Studio会自动去下载依赖,等他自动完成安装即可。...5约束推断Inference 在布局设计器的菜单上,还有一个『灯泡』一样的按钮,通过这个按钮,可以帮我们自动创建组件间的约束关系,他分析的是一个组件附近的组件,并根据当前在设计面板中的位置来创建约束关系...8Pack 在工具栏中,可以使用Pack工具,快速对组件进行编组操作,如图: ? 9快捷布局 在一个组件上点击右键,可以快速创建一些布局的快捷设计,如图所示: ?...11ConstraintLayout布局转换 通过Android Studio,我们可以很方便的把一个普通布局转化为ConstraintLayout,在布局设计器的左边栏下面的Component

    1.2K10

    Android入门教程 (一) Android简介和android studio安装

    的eclipse,就是我们写代码的工具 下载之后,无脑下一步即可,即到如下界面 注:安装完成之后,桌面不会有Android Studio的快捷方式,我们可以在{AS安装目录}\bin\studio64...但是因为我们是首次安装,所以在导入配置窗口选择不导入 接着会自动打开Android Studio,加载一段时间后,会弹出缺少SDK的提示,我们选择Cancel退出 就像JAVA的JDK一样,SDK就是...接着就弹出欢迎界面,开始让你配置Android Studio,我们选择下一步 接着就让我们选择一系列的设置,什么是否自定义安装,要什么背景颜色,这些都无关紧要,我没写的无脑next即可。...> constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res...> 前面的是xml文件的基本配置,整个界面是用ConstraintLayout布局 TextView是一个文本框组件,用于显示Hello world!

    1.1K20

    Infer Constraints,Autoconnect,ConstraintLayout拖拽使用教程

    最低兼容到 API 9 (即Android 2.3) 二、ConstraintLayout引入和ConstraintLayout布局文件的生成 1、如何引入ConstraintLayout 方法 (1...,已经有了约束后光标放上去会变红色 删除约束条件 添加基线(BaseLine)的约束条件 点击该view,让view周边显示出小方块和小圆圈,点击小圆圈按住不松手(此时该小圆圈被称为把手),然后拖拽到另一个锚点位置后松手...(3): 相连接的锚点和把手必须在一个平面中,垂直平面的锚点只能和垂直平面的把手互连 也就是说,A 的 左边界或者右边界中的锚点只能连接到 B 的左边界或者右边界的锚点,不能连接到B的上边界或下边界锚点...;BaseLine 的锚点也只能连接到另一个View的BaseLine 锚点。...,删除当前整个布局中的全部view的全部约束条件(右击view,在右键菜单中也有该图标) 4、约束条件的类型 (1)、相对于父布局的约束(Parent position) 把手与父布局的边界相连接,父布局的边界作为锚点

    1.4K10

    例说 Constraint Layout:初探

    | 导语 去年用 Android Studio 新建一个 Demo 工程时,发现自动生成的 MainActivity 的 XML 布局文件使用的竟然是 ConstraintLayout(CL,约束布局)...ContstraintLayout 是两年多前在 Google I/O 大会上首次亮相的,这款 Android 的新布局方案很是让人惊艳,不过因为其功能、性能,以及(可视化)工具都还在不断优化中;老的布局们有能力满足日常需求...借助 Android Studio 的可视化工具,能更迅速的完成界面布局 一般我们写一个 XML 布局文件时,都习惯于直接打开 XML 文本进行编辑,但是 ConstraintLayout 不一样,可以说它是和...Android Studio(AS) 自带的布局编辑器(Layout Editor)的可视化功能一起,从无到有被实现的。...不过不用担心,AS 提供了转换器,可以很方便将其转换为 CL: 打开需要转换的布局 XML 文件 -> 在组件树(Component Tree)面板中右键选中想要转换的(根)布局中的任意元素 -> Convert

    2.6K10

    安卓入门手册

    Intent 在 Android 中,Intent 是一种用于在组件之间传递消息的对象。它主要用于启动组件(如启动 Activity、启动 Service)或者在组件之间传递数据。...这样,当发送一个带有这个操作的 Intent 时,系统就会找到并启动 TargetActivity。 3. 数据传递 除了启动组件,Intent 还可以用于在组件之间传递数据。...AndroidManifest.xml 在使用 Intent 启动组件或者声明 Intent Filter 时,需要在 AndroidManifest.xml 文件中做相应的配置。 布局中的控件 Android 提供了许多预定义的控件,用于构建用户界面。以下是一些常用的控件: TextView: 用于显示文本。...尺寸单位 在布局文件中,通常使用 dp(density-independent pixels)作为尺寸单位,以确保在不同设备上显示一致的大小。

    75610

    Carson带你学Android:常用界面布局使用教程

    前言 在 Android开发中,绘制UI时常需各种布局 今天,我将全面介绍Android开发中最常用的五大布局 含 Android Studio 2.2中新增的布局:约束布局(ConstraintLayout...布局类型 在Android中,共有2类、6种布局方式,分别是: 2. 布局介绍 具体介绍 本文主要介绍传统的5大布局,关于约束布局(ConstraintLayout)具体点击查看文章 3....选择器(Selector) 4.1 作用 通过设置选择器(selector)可使控件 在不同操作下(默认、点击等) 显示不同样式 通过 xml编写 = selector.xml 4.2 属性 XML属性... 在布局文件main.xml中控件的属性设置: <Button android:id="@+id/startButton" android:layout_width=...、大小 <stroke android:width="1dp" android:color="#000000" /> 在布局文件main.xml中控件的属性设置:

    76720

    【Jetpack】ViewModel + LiveData + DataBinding 综合使用 ( 核心要点说明 | 组合方式 | 代码示例 )

    的 , 是 对 ViewModel 数据维护的一个补充 ; 在 Activity 中使用代码可以将 ViewModel 初始数据 设置给 视图组件 , 进行 初始状态显示 ; 如果 在运行过程中 ,...ViewModel 中的数据发生了变化 , 如何将变化应用到视图组件中 , 在视图中显示最新的数据内容 , 此时就用到了 LiveData 组件 ; 在 ViewModel 的基础上 , 通过 引入 LiveData..., 可以将 运行过程中 ViewModel 中的 Model 模型数据改变 通知 视图 View , 令视图组件显示最新的数据内容 ; 在 ViewModel 中使用了 LiveData 后 , 必须调用...视图组件 , 更新数据显示 ; LiveData 生效需要 为 MutableLiveData 设置 androidx.lifecycle.Observer 监听器 , 当数据发生改变时 , 就会 回调...to data binding layout " 选项 ; 然后 , 在 DataBinding 中配置 ViewModel 视图模型对象 ; 在 TextView 中显示文本时 , 设置如下属性

    2.4K21

    Android新特性介绍,ConstraintLayout完全解析

    其实ConstraintLayout是Android Studio 2.2中主要的新增功能之一,也是Google在去年的I/O大会上重点宣传的一个功能。...其实ConstraintLayout属于Android Studio 2.2的新特性,我在去年写《第二行代码》的时候就非常想要将这部分内容加入到新书里面,但是在尝试之后还是放弃了。...不过,Android Studio自动创建的这个布局默认使用的是RelativeLayout,我们可以通过如下操作将它转换成ConstraintLayout。 ?...首先需要说明,在ConstraintLayout中是有match parent的,只不过用的比较少,因为ConstraintLayout的一大特点就是为了解决布局嵌套,既然没有了布局嵌套,那么match...这样就实现了让两个按钮在水平方向上居中显示,在垂直方向上都距离底部64dp的功能了。 自动添加约束 不过如果界面中的内容变得复杂起来,给每个控件一个个地添加约束也是一件很繁琐的事情。

    2.3K70

    Constraintlayout约束布局三问

    Constraintlayout——约束布局,作为Jetpack的一个组件推出。今天的面试三问就是关于布局的: 说说constraintlayout的主要特性,为什么会设计出这一种布局?...但是ConstraintLayout功能可多了去了,可以设置比例,设置在控件中的位置,可以设置view中心的距离,还可以设置辅助线。...第三就是由于这些特性,大大减少了布局的嵌套,我们了解过性能优化的都知道,布局优化最大的一点就是要减少布局嵌套,而ConstraintLayout显然做到了这一点。...="parent" android:layout_width="match_parent" android:layout_width="0dp" 在父布局中按比例显示 app:layout_constraintHorizontal_bias...="0.3" 通过该属性可以设置在父布局中显示的位置,按比例显示,比如0.3就代表在3/10的位置。

    2.1K10
    领券