IntOffset
Prerequisites:
以下語法是繪在畫布固定位置
Modifier.offset(x = 20.dp, y = 10.dp)
offset Lambda
以下範例,每按一次按鈕,藍方塊就往右移100px,注意!background()一定要放在offset{}後面,才看得出效果。


步驟1:先把要移動的X「或」Y座標給預設值,並儲存起來。
1
var offsetX by remember { mutableStateOf(0) }
步驟2:設定Offset的參數是Lambda花括號{},Lambda區塊裡面是:
IntOffset(你儲存的x座標,你儲存的y座標)
IntOffset參數只能為整數
IntOffset(Int整數, Int整數)
若要x座標不動,設為0。
IntOffset(0,你儲存的y座標)
若要y座標不動,設為0。
IntOffset(你儲存的x座標,0)
語法如下:
1
Modifier.offset { IntOffset(offsetX, 0)}
以下程式碼,當執行的時候,按下按鈕,offsetX會增加100px,Compose就會重繪offset { IntOffset(100, 0)}這個語法,offsetX就會代入按鈕按下,新的offsetX座標,就會使方塊產生往右移動效果,因為y座標為0,固定不變,所以方塊呈現水平移動。
完整程式碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Composable
fun OffsetLambdaExample1() {
var offsetX by remember { mutableStateOf(0) }
Column {
Button(onClick = {
offsetX += 100
}) {
Text("Click")
}
Box(modifier = Modifier
.size(100.dp)
.offset { IntOffset(offsetX, 0)}
// background() 一定要放在offset之後
.background(Color.Blue)
)
}
}