Android开发Jetpack Compose元素Modifier特性详解

作者:互联网的小学生 时间:2023-03-10 23:29:54 

本文将会介绍Jetpack Compose中的Modifier。在谷歌官方文档中它的描述是这么一句话:Modifier元素是一个有序、不可变的集合,它可以往Jetpack Compose UI元素中添加修饰或者各种行为。例如,背景、填充和单击事件 * 装饰或添加行为到文本或按钮。本文将会从修饰符的两个特性有序和不可变入手来探究修饰符的应用,以下是本文目录:

  • 有序性

  • 不可变性

有序性

官方对修饰符定义的这个特性包含两个层面的意思,一是修饰符的使用是链式的它是有先后排列顺序的,二是这些顺序不仅仅是排列上的先后同时也是属性对UI展示效果起作用的先后顺序。接下来举一个例子来说明修饰符的有序的特性。

Box {
 val padding = 16.dp
 val onClick = Unit;
 Box(
     Modifier
         .clickable(onClick = { onClick })
         .padding(padding)
         .align(Alignment.Center)
         .size(50.dp, 50.dp)
         .background(Color.Green)
 )
}

Android开发Jetpack Compose元素Modifier特性详解

Box {
   val padding = 16.dp
   val onClick = Unit;
   Box(
       Modifier
           .padding(padding)
           .clickable(onClick = { onClick })
           .align(Alignment.Center)
           .size(50.dp, 50.dp)
           .background(Color.Green)
   )
}

Android开发Jetpack Compose元素Modifier特性详解

上面两段代码的意思都是在一个绿色背景宽高为50,50的Box控件中设置点击事件和Padding。首先我们可以直观的看到修饰符的使用是链式的符合咱们说的第一个有序性。读者可以观察两个gif图中水波动画的作用范围,可以清楚的看到第一张图波纹是作用范围是涵盖了边距的而第二张水波动画的范围仅仅作用在绿色矩形内部。第一段代码是先设置的点击事件而后设置的边距,而第二段代码是先设置边距而后设置了点击事件,就出现了不同的动画表现。我们通过这个例子就可以直观的看到修饰符的第二个有序性,也就是修饰属性对于UI展示作用的有序性,即属性发生作用的先后顺序和设置顺序是一致的。

不可变性

对于修饰符的不可变性笔者认为就是当设置的属性值确定时,被修饰的UI就确定了不会再变了。下面就展示一个位于屏幕中心,背景为绿色,旋转45度,宽度等比例拉伸2倍的正方形。

Box {
 Box(
     Modifier
         .rotate(45f)
         .scale(2f)
         .align(Alignment.Center)
         .size(50.dp, 50.dp)
         .background(Color.Green)
 )
}

Android开发Jetpack Compose元素Modifier特性详解

到这里本文对修饰符的特性介绍就结束了,修饰符还有很多的属性读者可以自行尝试研究,但是无论设置什么属性修饰符都遵循咱们讨论的这两个属性。这里附上修饰符的官方文档链接点击查看Modifier的官方文档,更多关于Android Jetpack Compose元素Modifier的资料请关注脚本之家其它相关文章!

来源:https://juejin.cn/post/7153189769147580446

标签:Android,Jetpack,Compose,Modifier
0
投稿

猜你喜欢

  • 详解C#读写Excel的几种方法

    2022-10-23 14:23:28
  • SpringBoot3.0自定stater模块的操作流程(chatGPT提供的49种场景)

    2023-06-15 05:21:46
  • android10 隐藏SystemUI锁屏下的多用户图标的示例代码

    2023-12-12 03:14:26
  • C#遍历List并删除某个元素的方法

    2023-03-22 10:22:08
  • JAVA实现单例模式的四种方法和一些特点

    2023-11-02 05:38:20
  • C# 清除cookies的代码

    2021-08-14 20:10:10
  • C# 利用StringBuilder提升字符串拼接性能的小例子

    2022-06-02 02:21:13
  • spring入门教程之bean的继承与自动装配详解

    2023-11-10 14:46:23
  • C#窗体程序实现全屏及取消全屏步骤

    2023-02-18 11:48:38
  • JAVA基础-GUI

    2023-10-24 22:26:07
  • Hibernate批量处理海量数据的方法

    2023-07-30 08:12:04
  • kotlin源码结构层次详解

    2022-08-19 14:24:48
  • Java数据结构及算法实例:朴素字符匹配 Brute Force

    2022-01-10 15:03:40
  • C#下listview如何插入图片

    2023-06-18 11:45:44
  • 基于IntelliJ IDEA的类注释和方法注释操作

    2023-03-04 02:00:31
  • C#纹理画刷TextureBrush用法实例

    2023-03-17 07:23:12
  • Android最简单的限制输入方法(只包含数字、字母和符号)

    2022-01-22 00:15:45
  • Android实现记事本功能(26)

    2023-02-17 22:30:23
  • Monkeyrunner 常用按键总结

    2022-08-23 09:17:17
  • Android系统自带分享图片功能

    2022-08-03 09:14:07
  • asp之家 软件编程 m.aspxhome.com