Compose 自定义 - 约束 Constrains

视觉特征-自监督-同源不同crop视图一致性【2021-05】:VICReg【同图➜双视图➜特征不变性】【批次每行一图、每列一特征维度】【正则化:列内方差防坍塌+列间协方差去冗余】【无负样本】 Abstract摘要最近的图像表征学习自监督方法通过由输入的编码器生成的之间的来进行学习。主要挑战是防止发生坍塌,即编码器生成恒定或无信息的向量。我们提出了与大多数解决相同问题的其他方法不同,并且在多项下游任务上取得了与最先进方法相当的结果。此外,我们表明,方差正则化项能够稳定其他方法的训练,并带来性能提升。 阅读详情

官方介绍 

一、概念

是当前节点宽高的上下界(最大值和最小值)。在布局阶段,当父容器测量子元素的时候会提供约束条件 Contraints 好让子元素知道自己被允许的最大最小尺寸,当测量完计算出自身需要的尺寸后,需要综合父容器给出的约束条件,最终得出自身的实际尺寸。

class Constraints {
    val minWidth: Int
    val maxWidth: Int
    val minHeight: Int
    val maxHeight: Int

}

1.1 类型

对宽高可以分别设置不同类型的约束。

有边界一个区间,即包含最大值和最小值。
无界限没有约束,即0到无限大。
固定值(完全匹配)一个确切值,即最大值最小值相等。

二、Modifier 对 Contraints 的影响

自上而下测量:假设屏幕宽高是300*200,对于 fillMaxSize 这个 Modifier Node,填满剩余空间会将 Constraints 的 min 值设为最大值,接着 warpContentSize 让子节点自己决定,会将 min 值设为0,最后 size(50) 给出一个具体的约束,min 和 max 都设为 50。 

.size()

.width()

.height()

在遵守约束的前提下往传入值靠拢。值在区间就是该值,低于最小值就是最小值,超过最大值就是最大值。

.requiredSize()

.requiredWidth()

.requiredHeight()

子元素的测量结果一定会在满足父元素约束下决定自身大小,例如 Modifier.width(300.dp).width(150.dp),最终宽度是300.dp,因为第一个约束为[300-300dp],第二个150.dp因为超出范围而被强制设为 min。使用 requiredSize() 会在约束传递过程中修改限制,就是要忽略父容器约束强制使用自己的值。例如约束为 weight[100-100dp],调用 .requiredWidth(50dp) 后约束为 weight[50-50dp]。
.width()、.height()相比用 size 同时设置宽高,单独设置宽或高不影响对方。
.sizeIn()

能更细粒度的控制约束。

.sizeIn(

        minWidth = 100dp,

        maxWidth = 200dp,

        minHeight = 10dp,

        maxHeight = 20dp

)

.wrapContentSize()会把宽高约束的最小值重置为0。
.fillMaxSize()会把宽高约束变为最大值。

2.1 单次调用

父容器传入的 Contraints 为 weight[100-300dp]、height[100-200dp]

在约束范围内

调用 Modifier.size(150dp),约束变成 weight[150-150dp]、height[150-150dp] 继续向下传递,此时该节点显示一个 150*150 的矩形。

小于约束范围

调用 Modifier.size(50dp),约束变成 weight[100-100dp]、height[100-100dp] 继续向下传递,该节点显示一个 100*100 的矩形。

大于约束范围

调用 Modifier.size(400dp),约束变成 weight[300-300dp]、height[200-200dp] 继续向下传递,该节点显示一个 300*200 的矩形。

2.2 多次调用

上方举例其实也解释了链式调用 .size() 为什么只有第一个生效,因为第一个已经把约束变为最大值和最小值相等的固定值,这样第二个无论传值更大或更小,都会因为遵循 Contraints 的工作原理而无法再次改变。

QPrintPreviewDialog 打印预览使用实例 qt打印机预览实用demo 阅读详情

相关推荐

Proteus 8.17安装部署全指南:避坑、汉化与STM32库配置

Proteus是一款广泛用于单片机仿真与电路设计的EDA工具,其核心价值在于支持嵌入式系统原型验证与教学实践。Proteus 8.17版本重构了许可证机制(LIC Engine)、依赖环境(VC++ 2019/NET 4.8)及路径加载逻辑,导致传统安装方法失效。掌握正确安装部署流程,是保障原理图绘制、VSM仿真(如51/STM32/ESP32)及外设波形观测(OLED、SPI、ADC)稳定运行的前提。本文聚焦Windows平台下零失败安装路径选择、权限配置、汉化实施与高频器件(如STM32F103)元件库

weixin_33377602的博客 402

Compose 组件 - 一些布局类型

Composable函数是整个UI中的某一部分界面(称为Layout),执行后会作为一个节点添加到UI树中,然后渲染展示在屏幕上。每个元素都有一个父元素以及可能有多个子元素,每个元素在父元素中都有一个坐标(x,y)和尺寸(width,height)。就是自定义一个 Modifier 的扩展函数,实现它的 layout( ) 方法如何测量及放置自身。形参Lambda有2个参数,measurable用于子元素的测量和放置,constraints约束子元素宽高的最大和最小值。

HugMua的博客 1655

PyFluent进阶实战:自动化密闭几何(Watertight)网格生成

本文深入探讨了如何利用PyFluent实现自动化密闭几何(Watertight)网格生成。通过Python脚本控制Fluent Meshing工作流,工程师可以高效、一致地完成从几何导入、局部尺寸定义、面网格生成到边界层设置和体网格输出的全过程,从而将复杂的CFD前处理工作转化为可重复、可集成的自动化流程,极大提升仿真效率和知识复用性。

t8u9v0w1x的博客 579

聊一聊 Compose 的固有特性测量 Intrinsic | 开发者说·DTalk

本文原作者:RugerMc,原文发布于:Jetpack Compose 博物馆https://mp.weixin.qq.com/s/ESJHNzXXjdF95jCf9CNA6Q目前有一...

Android开发者 1827

PHP版本对接支付宝支付接口 电脑网站 详细介绍 沙箱环境 超简单易懂

PHP版本对接支付宝支付接口 其实理顺了思路后,按照我接下来的步骤来,真的超级简单啊,为啥有那么多的朋友们折腾了那么久呢,嘿嘿,跟我走吧~ 我是昨天晚上洗完澡之后,大概八九点,才开始正式开工尝试去这一工程的,我去支付宝的蚂蚁金服开放平台里把各个知识点和文档大概都看了一遍,大致弄明白了要怎么操作了,建议大家看看电脑网站开发文档,忙到了夜里十二点左右,成功地用支付宝给的Demo完成了付款操...

爱玲姐姐的博客 1万+

终于搞定!Cloudflare Tunnel 报错 Error 1033,一次完整修复记录

最近遇到了 Cloudflare Tunnel Error 1033 报错的问题,本文记录了完整的排查和解决方案💡

XiaoqiangClub的博客 1766

Android jetpack Compose之约束布局

我们都知道ConstraintLayout在构建嵌套层级复杂的视图界面时可以有效降低视图树的高度,使视图树扁平化,约束布局在测量布局耗时上比传统的相对布局具有更好的性能,并且约束布局可以根据百分比自适应各种尺寸的终端设备。因为约束布局确实很好用,所以,官方也为我们将约束布局迁移到了Compose平台。本文就是介绍约束布局在Compose中的使用。

知识应该共享,创造才应收费 2929

RockChip Android14 修改LCD背光最大值

在调试LCD屏时时长会出现硬件不匹配,导致电流过大,屏幕发热严重。在不调整硬件的情况下,我们可以通过修改软件,降低LCD背光最大值来实现适配。我们都知道LCD屏背光是靠pwm来控制,一般来说最大值可以设置为255,针对上述问题,我们可以通过软件来降低该值,比如200,100等等。

qq_34968572的博客 631

SQL语言之定义约束

定义约束 一、数据库中的约束类型 非空约束(not null) 唯一性约束(unique) 主键约束(primary key) 外键约束(foreign key) 用户自定义约束(check) 定义约束的原则 1.在创建表的同时,或者在创建表之后都可以定义约束。 2.可以给约束其名字,但约束名不能相同,必须是唯一的。如果没有为约束起名 字,Oracle服务器将用默认格式SYS_Cn产生一个名字,这里的n是一个唯一 的整数,所以约束名是唯一的; 二、定义not null约束

葵花田 4851

盲孔、埋孔、通孔、一阶HDI、二阶HDI概念

文章目录1. 盲孔和埋孔2. 一阶、二阶HDI3. PADS软件设置盲埋孔 1. 盲孔和埋孔 HDI板是高密度互连(High Density Interconnector)的缩写,是生产印制板的一种技术,使用微盲埋孔技术的一种线路分布密度比较高的电路板,也被称为盲埋孔板,下图就是一个6层HDI板,其中C和D就是盲孔,B是埋孔,A是通孔。 盲孔(Blind Via)指连接外层到内层的金属化孔,D是V13孔,连接顶层和第3层,C是V56孔,连接第5层和底层。 埋孔(Buried Via)指连接内层到内层的金属

记得诚 3万+

学Simulink--机器人基础关节控制场景实例:基于Simulink的无刷直流电机(BLDC)关节六步换相位置控制仿真

本文详细介绍了基于Simulink的BLDC六步换相位置控制仿真方法,针对机器人关节的低成本控制需求。重点阐述了霍尔定位、六步换相和位置闭环三大核心原理,通过Simulink建模实现了从霍尔信号处理到位置环控制的全流程。仿真结果表明,该系统可实现0.3°的定位精度和80ms的响应时间,满足教育机器人等应用场景需求。文章还提供了核心代码模块和参数设置方法,并探讨了转矩脉动抑制、无传感器控制等进阶优化方向,为低成本机器人关节驱动提供了实用解决方案。

amy_mhd的博客 153

android compose使用约束布局

【代码】android compose使用约束布局。

363

基于STM32L4XX、HAL库的 ATGM336H GPS定位模块驱动程序设计

/ 转换为km/h。// 定位状态: 0=无效, 1=GPS定位, 2=差分定位。// GPS解析数据。支持GPS/BeiDou/GLONASS/Galileo/QZSS多系统联合定位。// 回调函数(需要在HAL_UART_RxCpltCallback中调用)// 地面速度(km/h)// 海拔高度(m)

zhusl6688的博客 794

Compose中的基本布局(二)

文章目录一、前言二、Column三、Modifier四、Row五、Box六、BoxWithConstraints七、参考链接 一、前言 上篇描述了Compose的环境配置和简单的演示,本片来讲布局的使用。在Compose中有一些基础的布局Column、Row、Box、BoxWithConstraints,也有一些比较复杂的布局。如延迟列表布局LazyColumn、LazyRow,还有ConstraintLayout 二、Column Column可以使布局进行垂直排列,示例代码如下: Column{

Mr_Tony的专栏 3965

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Compose 中的 ConstraintLayout(约束布局) 比例拉伸

在 Compose 中,布局和界面的构建方式与传统的 XML 布局系统有很大的不同。Compose 是一种声明式的 UI 编程模型,使用 Kotlin 语言编写。

简单记录工作和学习 1495

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【Android】Compose布局

自定义的 Modifier 扩展函数 firstBaselineToTop,以及一个使用该 Modifier 的 Composable 函数 TextWithPaddingToBaseline。// 测量元素,并根据提供的约束条件获取其尺寸信息。// 获取文本内容的第一行基线距离顶部的距离。// 这个值用于计算文本相对于父容器顶部的位置。// 计算新的Y坐标,确保文本的第一行基线距离顶部为指定的Dp值。// 如果文本的第一行基线已经比指定的Dp值大,则placeableY将会是一个负数,

LeGuan_Ha的博客 966

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Compose笔记(三十三)--BoxWithConstraints

 这一节主要了解一下Compose中的BoxWithConstraints,它是Compose中一个特殊的布局组件,用于在布局过程中获取父容器的约束条...

ljt2724960661的博客 552

自定义约束名

除了添加数据库提供的约束条件外,我们还可以自定义约束 自定义约束使用 CONSTRAINT关键字实现 语法格式: CONSTRAINT 约束名 约束类型(添加约束的字段名) CREATE TABLE employee( eno number(4), ename varchar2(12), sal number(8,2), hiredate DATE, CONSTRAINT pk_eno ...

JustinNeil的博客 3441

Compose中的ConstraintLayout布局(三)

文章目录一、前言二、相关依赖三、示例代码四、约束分离createRefFor五、barriers六、guidelines七、chains八、Group九、参考链接 一、前言 如果我们有布局比较复杂同时对对齐要求很高,那么免不了要嵌套很多Column、Row。虽说对于Compose来说嵌套并不影响性能,但是过多的嵌套却导致较差的可读性和维护性。因此Google退出constraintlayout-compose来解决这个问题,不过目前这个还没有正式版本,所以使用的时候需要注意下API是否已经变更的问题。由于每

Mr_Tony的专栏 2078

Jetpack Compose中的绘制流程和自定义布局

与大多数其他界面工具包一样,Compose 会通过几个不同的“阶段”来渲染帧。如果我们观察一下 Android View 系统,就会发现它有 3 个主要阶段:测量、布局和绘制。Compose 和它非常相似,但开头多了一个叫做“组合”的重要阶段。 Compose 有 3 个主要阶段: 组合:要显示什么样的界面。Compose 运行Composable可组合函数并创建LayoutNode视图树。 布局:要放置界面的位置。该阶段包含两个步骤:测量和放置。对于视图树中的每个LayoutNode节点进行宽高尺寸测

川峰的博客 3470

mysql创建自定义约束_MySQL常见建表选项及约束

阅读目录---MySQL常见的建表选项及约束:2、指定表选项:engine、auto_increment、comment2、unique:唯一约束5、check:检查---enum、set一、CREATE TABLE 选项1、在定义列的时候,指定列选项1)DEFAULT :定义列的默认值当插入一个新行到表中并且没有给该列明确赋值时,如果定义了列的默认值,将自动得到默认值 ;如果没有,则为null。...

weixin_35831315的博客 2851

android Compose Modifier介绍

android Compose的 Modifier修饰符几种使用方式介绍

sinat_35541927的博客 1859

Android Compose 约束布局(ConstraintLayout、Modifier.constrainAs)源码深度剖析(十二)

约束布局(ConstraintLayout)是 Compose 中一个强大的布局组件,它允许开发者通过定义组件之间的约束关系来精确地控制它们的位置和大小。与传统的布局方式(如线性布局、相对布局)相比,约束布局更加灵活,可以处理复杂的 UI 设计。构建复杂的 UI 界面:可以通过定义组件之间的约束关系,实现复杂的布局效果,如嵌套布局、多列布局等。自适应布局:可以根据不同的屏幕尺寸和设备方向,自动调整组件的位置和大小。减少布局嵌套:通过约束关系直接控制组件的位置,减少布局嵌套,提高布局性能。

Android开发领域创作者 1150

快速上手Compose约束布局

用一个简单的效果,带领大家快速上手约束布局

WangYilei0318的博客 1408

Compose ConstraintLayout 详讲

作者:新小梦博客:https://juejin.cn/post/6934203680786743304简介与依赖Compose ConstraintLayout约束布局主要应用在构建复杂布...

陈宇明 2888

Jetpack Compose学习(14)——ConstraintLayout约束布局使用

注意: createRef(),createRefs(),Modifier.constrainAs()这个ConstraintLayoutScope作用域才能使用!ConstraintSet对象就表明了当前的布局里的各组件的对齐关系,我们只需要构造ConstraintLayout的时候,传递此对象即可达到动态更新约束条件的效果!除了上面说到的createRef方法,我们还可以通过Modifier.layoutId(id)和createRefFor(id)来联用进行创建ref对象。

weixin_55010563的博客 1112
上一篇: Compose 基础 - 数据转UI的三阶段(组合、布局、绘制)
下一篇: 网络 - OkHttp
Jomurphys
博客等级 码龄9年 1768粉丝 261原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值