크리스마스 이브 크리스마스 이브 날 아침입니다. 아침에 밖을 보니 눈이 내리는 것을 보았습니다... 이를 기념하여 SnowFall effect를 구현해보도록 하겠습니다. SnowFall Effect SnowFall Effect는 화면에서 눈이 내리는 애니메이션 입니다. 이를 위해, 가장 필요한 것은 바로 눈입니다. 눈을 많이 생성하고, 화면 위에서 아래까지 떨어지도록 애니메이션을 만들어주면, 눈 내리는 모션을 제작할 수 있습니다. 완성 미리보기 snow Data Class data class Snow를 생성해주겠습니다. Snow의 경우에는, 눈의 시작 위치 x,y 좌표 그리고 눈의 크기인 radius 마지막으로 떨어지는 속도를 담은 snow가 정의된 data class입니다. data class Snow..
요약 지난 번에 공부했던, anchoredDraggable을 이용하여 슬라이드를 통한 공을 던지는 모션을 제작해보고자 합니다. 공의 시작 위치는 기기의 하단 가운데 이며 위로 스크롤 하게 되면, 상단 중앙 포수가 있는 위치까지 날아가게 됩니다. 사용자가 던지게 되면, graphicsLayer를 통해 rotationZ값을 drag된 위치에 따라 계산하여, 회전하는 듯한 모션을 주어 공을 던지는 느낌을 주었습니다. 또한 공이 포수 위치까지 도달하게 되면, coroutine을 이용하여 0.5초 딜레이를 주어 다시 원래 초기 위치로 돌아가도록 설정하였습니다. 완성 전체 코드 class MainActivity : ComponentActivity() { override fun onCreate(savedInstanc..
지난 포스팅에 이어서 개발을 진행하겠습니다. 아이콘 적용 기존에 텍스트 B가 적용되어 있는 스와이핑 버튼을 아이콘으로 변경하도록 하겠습니다. Icon(Icons.Outlined.KeyboardArrowRight, "", tint = Color.White, modifier = Modifier.align( Alignment.Center )) 기존의 Text를 Icon으로 바꾸어주었습니다. 드래그가 완료가 되면 배경색을 바꾸기 드래그가 완료가 되면, 기존의 배경색을 바꾸도록 하겠습니다. 기존의 노랑으로 적용되어 있던 배경색을 Gary -> LightGray로 변경되게끔 바꾸어보도록 하겠습니다. 드래그가 중간 이상에 도착을 했을 때 색상을 LightGray로 바뀌도록 하기 위해, animateColorAsSta..
Slide-Unlock 기능이 무엇인가? 요즘 잠금 해제 기능은 다들 지문 인식 또는 페이스 아이디를 통해 잠금 해제를 하는데, 몇 년 전에는 밀어서 잠금 해제를 많이 쓰곤 했다. 대충 이런 느낌인데, 최근에 AnchoredDraggable에 대해 학습한 김에, 다음 기능을 구현해보고자 한다. 오늘의 완성본 구현 enum class 가장 먼저 상태를 표현할 enum class를 생각해보자. 잠금 해제의 상태는 처음 - 끝 으로 표현이 가능하다. enum class Position{ Start,End } state 구현 다음은 가장 중요하다고 생각하는 컴포저블의 드래그 상태를 저장하는 state의 구현이다. val state = remember { AnchoredDraggableState( initialV..
AnchoredDraggable 포스팅에 앞서 Anchored draggable이 무엇인지 간단하게 설명해보고자 합니다. AnchoredDraggableState AnchoredDraggableState는 드래그 가능한 요소를 관리하고 제어하는 데 사용합니다. 간단하게 설명하자면, 특정 앵커 포인트 사이에서 드래그를 관리하는 데 사용되는 상태 객체 입니다. class AnchoredDraggableState( initialValue: T, internal val positionalThreshold: (totalDistance: Float) -> Float, internal val velocityThreshold: () -> Float, val animationSpec: AnimationSpec, inte..