Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코딩테스트
- android
- react
- swift map
- MVVM
- 안드로이드
- Swift 문법
- RxJava
- 이펙티브 코틀린
- Java
- 잡담
- 프로그래머스
- 개발자
- Rxjava 안드로이드
- 코틀린
- Firebase
- 이펙티브코틀린
- android compose
- Kotiln
- 안드로이드 다이얼로그
- 반응형 프로그래밍
- 일상
- 코루틴
- 안드로이드 컴포즈
- 알고리즘
- RxKotiln
- 안드로이드 개발자
- Dev6
- Flutter
- Go언어
Archives
- Today
- Total
최데브는 오늘도 프로그래밍을 한다.
스와이프 삭제 구현 본문
반응형
이미 쓴 글이 있지만 솔직히 너무 별로라서 새로 만들어봤다.
(솔직히 내가 만들어놓고도 이건 좀.. 하고 있었음)
2024.01.14 - [Android/Android Compose] - [안드로이드 컴포즈] 스와이프 삭제 구현
핵심 키워드는 DraggableAnchors, AnchoredDraggableState
이고 구현에 관심이 있다면 위 검색어로 찾아보면 훨씬 쉽고 자연스럽게 뚝딱하고 만들 수 있다.
@OptIn(ExperimentalFoundationApi::class)
@Composable
fun SwipeScreen(
contentComposable: @Composable () -> Unit,
buttonComposable: @Composable () -> Unit,
buttonModifier : Modifier,
clickAction : () -> Unit
) {
val density = LocalDensity.current
val screenSizeDp = LocalConfiguration.current.screenWidthDp.dp
var buttonVisible by remember { mutableStateOf(false) }
val anchors = remember {
DraggableAnchors {
DragValue.Start at 0f
DragValue.End at -250f
}
}
val state = remember {
AnchoredDraggableState(
initialValue = DragValue.Start,
positionalThreshold = { with(density) { 130.dp.toPx() } },
velocityThreshold = { with(density) { 130.dp.toPx() } },
animationSpec = tween(),
)
}
SideEffect { state.updateAnchors(anchors) }
Row(
horizontalArrangement = Arrangement.SpaceBetween,
modifier = Modifier.height(100.dp)
) {
Box(
Modifier
.fillMaxSize()
.anchoredDraggable(state, Orientation.Horizontal)
) {
Box(modifier = Modifier
.width(80.dp)
.height(78.dp)
.align(Alignment.CenterEnd)
.clip(RoundedCornerShape(12.dp))
.background(color = LinkZipTheme.color.redFB5B63)
.padding(
vertical = 10.dp
)
.clickable {
},
) {
Box(modifier = buttonModifier
.align(Alignment.Center)
.clickable {
clickAction()
}){
buttonComposable()
}
}
Box(
Modifier
.offset {
IntOffset(
x = state
.requireOffset()
.roundToInt(),
y = 0
)
} // x = 0 Horizontal
){
contentComposable()
}
}
}
}
반응형
'Android > Android Compose' 카테고리의 다른 글
컴포즈의 Side-Effect 형제들에 대해서 알아보자 - 2 (0) | 2024.04.28 |
---|---|
컴포즈의 Side-Effect 형제들에 대해서 알아보자 - 1 (0) | 2024.04.21 |
Jetpack Compose CompositionLocal 에 대해 알아봅시다 (0) | 2024.03.31 |
[안드로이드 컴포즈] 스와이프 삭제 구현 (1) | 2024.01.14 |
안드로이드 컴포즈 dialog 커스텀 하기 (0) | 2023.12.20 |
Jetpack Compose 에서 Lifecycle 관리하기 (0) | 2023.05.11 |
안드로이드 컴포즈 1주차 정리 (0) | 2021.11.07 |
안드로이드 컴포즈 - GDG DevFest2021 참여하다. (0) | 2021.11.02 |
Comments