網站首頁 編程語言 正文
正文
本文將會介紹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)
)
}
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)
)
}
上面兩段代碼的意思都是在一個綠色背景寬高為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)
)
}
原文鏈接:https://juejin.cn/post/7153189769147580446
相關推薦
- 2022-07-09 Android同步異步任務與多線程和Handler消息處理機制
- 2022-10-10 ASP.NET?MVC使用jQuery?ui的progressbar實現進度條_實用技巧
- 2022-06-10 C語言?模擬實現memcpy與memmove函數詳解_C 語言
- 2022-04-12 C++制作簡單的計算器功能_C 語言
- 2022-05-14 面試分析分布式架構Redis熱點key大Value解決方案_Redis
- 2022-03-15 使用swagger-bootstrap-ui ,訪問的時候 404
- 2022-05-19 C++線程之thread詳解_C 語言
- 2022-02-11 ResizeObserver Polyfill監聽元素寬高的變化,在React中的應用
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支