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

做游戏门户网站要注意什么西宁做网站是什么

做游戏门户网站要注意什么,西宁做网站是什么,优化大师下载,线上拓客渠道有哪些Compose常用UI组件 概述Modifier 修饰符常用Modifier修饰符作用域限定Modifier Modifier 实现原理Modifier.Element链的构建链的解析 常用基础组件常用布局组件列表组件 概述 Compose 预置了很多基础组件#xff0c;如 Button#xff0c;TextField#xff0c;TopAppBar等如 ButtonTextFieldTopAppBar等他们都是基于 Material Design规范设计等。同时也提供了 ColumnRowBox等容器组件每个基础组件都有一个Modifier修饰符。 Modifier 修饰符 允许我们通过连是调用的写法来为组件应用一系列样式设置如边距位移字体等。 常用Modifier修饰符 Modifier.size组件大小Modifier.background: 为组件添加背景色Modifier.fillMaxSize让组件高度或者宽度上填满父空间Modifier.border Modifier.padding给组件添加边框和间隙Modifier.offset移动被修饰组件的位置分别传入垂直或水平方向的偏移量 作用域限定Modifier Compose 的作用域限定实现了 Modifier 的安全调用我们只能在特定作用域中调用修饰符 如下方 Box 的定义中BoxScope即是作用域 Composable inline fun Box(modifier: Modifier Modifier, //修饰符contentAlignment: Alignment Alignment.TopStart,//内容的位置propagateMinConstraints: Boolean false, //是否应将传入的最小约束传递给内容content: Composable BoxScope.() - Unit //内容即界面元素 ) {...... }matchParentSizeBoxScope中使用保证当前组件的尺寸与父组件相同weight在RowScope或ColumnScope中使用用于设置百分比 Modifier 实现原理 查看源码Modifier接口有3个直接实现类或接口伴生对象Modifier、内部子接口Modifier.Element、CombinedModifier。 伴生对象Modifier最常用的Modifier 当我们在代码中使用 Modifier.xxx()实际使用的就是这个伴生对象。内部子接口 Modifier.Element当我们使用Modifier.xxx()时其内部实际会创建一个Modifier实例。CombinedModifierCompose内部维护的数据结构用于连接Modifier链中的每个Modifier结点。 Modifier.Element LayoutModifier与布局相关但凡涉及大小的位置都和这个相关。ComposedModifier 一个私有类用户无法直接创建。它主要用于组合多个Modifier实例。DrawModifier来在布局空间中执行绘制操作过Modifier.drawWithContent函数创建。…,每个Element都有自己专属的作用。 链的构建 当我们通过链式调用Modifier时其实调用的是then()方法来拼接Modifier interface Modifier {infix fun then(other: Modifier): Modifier if (other Modifier) this else CombinedModifier(this, other) }class CombinedModifier(private val outer: Modifier,private val inner: Modifier ) : Modifier链的解析 借助 Modifier 接口中 foldIn() 与 foldOut() 用法 foldIn()正向遍历Modifier链SizeModifier- Background - PaddingModifier - ComposedModifier foldOut()反向遍历 Modifier 链, ComposedModifier - PaddingModifier - Background -SizeModifier 遍历形成的链没有 CombinedModifier因为CombinedModifier重写了foldIn()方法 interface Element : Modifier {...override fun R foldIn(initial: R, operation: (R, Element) - R): R operation(initial, this) }class CombinedModifier(private val outer: Modifier,private val inner: Modifier ) : Modifier {...override fun R foldIn(initial: R, operation: (R, Modifier.Element) - R): R inner.foldIn(outer.foldIn(initial, operation), operation) }我们知道Compose组件都是基于Layout这个基础组件实现的所以我们来看看我们创建的Modifier在其中是如何进行传递的。可以发现我们的modifier传入了一个名为materializerOf方法。 Composable inline fun Layout(content: Composable () - Unit,modifier: Modifier Modifier,measurePolicy: MeasurePolicy ) {...ReusableComposeNodeComposeUiNode, ApplierAny(factory ...,update {...},skippableUpdate materializerOf(modifier), // 重点content ...) }走进Composer.materialize()。可以发现源码中使用了fouldIn()方法进行了递归处理完全摊开的Modifier链。 fun Composer.materialize(modifier: Modifier): Modifier {...val result modifier.foldInModifier(Modifier) { acc, element -acc.then(if (element is ComposedModifier) {kotlin.Suppress(UNCHECKED_CAST)val factory element.factory as Modifier.(Composer, Int) - Modifierval composedMod factory(Modifier, this, 0) // 生产 Modifiermaterialize(composedMod) // 生成出的 Modifier 可能也包含 ComposedModifier递归处理} else element)}...return result }常用基础组件 Text用于显示文本内容。Image用于显示图片。Button用于创建按钮。TextField用于接收用户输入的文本。Divider用于在 UI 中添加分隔线。 常用布局组件 Column用于垂直排列多个组件。Row用于水平排列多个组件。Box用于在屏幕上创建一个矩形的区域。Surface用于绘制一块可交互的区域。Card用于显示一个卡片式的 UI 元素。Spacer留白组件。ConstraintLayout约束布局。Scaffold 脚手架。 列表组件 LazyComposables包含 LazyColumn 和 LazyRow, 用于垂直 和 水平显示 滚动的列表。LazyListScope作用域包含 itemitem(Int) 和 items(List)以及 itemsIndexed(List)用于构建LazyComposables的列表内容。 参考资料图解Compose Modifier实现原理 竟然如此简单
http://www.yingshimen.cn/news/48643/

相关文章:

  • 网站怎么做 流程微信公众号登录入口在哪里
  • 个人网上银行seo技术服务外包
  • html5响应式布局网站企业网站现状
  • 网站制作软件dw的全称seo 优化 工具
  • 网站vi设计公司护肤品网页设计图片
  • 厦门网站建设公司排名重庆seo怎么样
  • 怎么用jsp做网站详细asp网站建设公司
  • 网站建设与营销经验做网站没资源
  • 云南建设厅建筑业管理网站湖北黄石网站群建设
  • 开发商城网站多少钱潍坊建立企业网站公司
  • 东莞响应式网站哪家好域名备案企业网站内容
  • 青海省建设厅网站姚宽一正能量网站下载
  • 网站目录架构电子商务网站建设知识
  • 如何登陆工商局网站做变更做logo的网站
  • 网站的页面布局是什么wordpress官方下载
  • 老鹰网营销型网站建设聊天直播软件开发
  • 网站死链怎么办wordpress文章和页面的区别
  • 建设银行发卡银行网站贵阳app开发公司哪家强
  • 广西做网站企业做网站的意义
  • 站群网站和做seo那个号黑帽seo培训网
  • 温州手机网站开发如何将qq音乐链接到wordpress
  • 山东东营市天气预报娄底网站seo
  • 游戏直播网站怎么做网站备案网站简介
  • 定制西服如何做好网站优化
  • 电商网站开发进度表wordpress 增加浏览数
  • 网站怎么做导航页中国工商信息查询网
  • 余姚物流做网站网站目录权限
  • 做管理培训的网站有什么安徽义信建设网站
  • 绍兴网站制作计划网页版游戏网站
  • 青岛市做网站优化个人注册一个小公司要多少钱