분류 전체보기87 [Jetpack Compose] 키보드 영역에 맞춰 화면을 재구성하기 (imePadding) 우리가 컴포넌트를 구성할 때, 텍스트필드처럼 사용자에게 입력 값을 받아야하는 경우가 종종 있다.그런 경우 Box, Row, Column 과 같은 Layout Composable 안에 텍스트필드를 놓을텐데 이 때, 텍스트 필드의 포커스가 주어지면 키보드가 올라오면서 하단에 위치하면 컴포넌트를 가리게 되는 경우가 있을 것이다.이런 경우 개인 프로젝트라면 큰 문제가 없겠지만, 실 서비스 프로젝트인 경우 UX 에 영향을 끼치므로 좋지 않은 사용자 환경이 만들어지게 된다. 이러한 상황을 대비하기 위해 나온 것이 ImePadding 이다. ImePadding 이란?기존 XML 을 사용하던 시절에서는 키보드 높이에 맞춰 뷰의 영역을 수정해주려면 WindowInset 에서 키보드 영역을 구하고, 이를 다시 계산하여 뷰.. 2024. 9. 24. [Jetpack Compose] 애니메이션 관련 함수들을 알아보자 ! (animateColorAsState, Crossfade, AnimatedVisibility) # animateColorAsStateColor 와 관련된 애니메이션 함수로 targetValue 에 해당하는 Color 로 색상을 변환해준다.animateColorAsState 의 내부 구현 코드targetValue : 변환할 대상 색상. 현재 색상과 다른 색상이 지정되면 해당 색상으로 변환 애니메이션이 실행된다.AnimationSpec : 애니메이션을 제어할 속성들의 집합인 Interface . animateColorState 에서는 기본 값이 colorDefaultSpring 으로 적용되어 있다.label : 디버깅 시 추적용으로 쓰인다.finishedListener : 색상 변환 애니메이션 작업이 끝났을 때 실행되는 람다. 완료 시점에 새로운 이벤트를 발생시켜야한다면 이것을 구현해주도록 하자. .. 2024. 9. 24. [Jetpack Compose] Navigation PopBackStack 반복 실행 시 빈 화면이 나오던 문제 보통 우리가 컴포즈를 사용할때는 NavHost 라는 것을 활용해서 여러 컴포저블로 Srceen을 구현하고, NavController 의 Navigate를 사용해 Srceen을 이동하면서 사용한다.이 사이에서 가장 많이 사용되는것은 단연코 NavController 이다. 이것의 기능은 여러가지이지만, 지금은 Stack 관련해서만 작성할 예정.NavController.popBackStack쉽게 알다시피 뒤로가기 기능과 동일한 작업을 한다.BackQueue 에 Stack이 쌓이고, popBackStack을 호출하면 최상위 Stack 부터 차례대로 pop 하면서 스크린을 뒤로 가게 해준다.하지만 이 부분에는 약간의 문제가 존재한다.Navigate 시 컴포즈는 이동되는 화면을 Stack 에 바로 쌓아버리기 때문에.. 2024. 9. 24. [Jetpack Compose] State Hoisting (상태 끌어올리기) 를 알아보자 # Stateful 과 StatelessState Hoisting 에 앞서 우리는 Stateful 과 Stateless 라는 것을 알아야한다.Stateful 이란 상태를 가지고 있는을 의미하고 Stateless 는 무상태를 의미한다. 즉, Compose 내에서 Stateful 은 함수 내부에 state 를 생성하고 이를 관리하는 것, Stateless 는 함수 내부에서 state 를 생성하지 않고 이를 전달받아 사용하는 것이다. 아래는 Stateful Composable 과 Stateless Composable 에 대한 예시 코드이다.@Composablefun Stateful(){ var state by remember { mutableStateOf(0) } Stateless( s.. 2024. 9. 24. [Jetpack Compose] rememberUpdatedState 가 무엇인지와 언제 사용하는지 알아보자 # rememberUpdatedState 가 무엇일까?remember 는 value 를 캐싱한다.하지만 value 가 바뀔때마다 새롭게 재계산을 하기 위해서는 key 를 설정해주어야한다.즉 아래와 같이 설정을 해줘야 참조한 상태에 따라 새로운 값으로 바뀐다는 의미이다. val test = remember(value) { mutableStateOf(value) } 근데 이렇게 구현하기에는 코드가 너무 길다.val rememberUpdateNumber by rememberUpdatedState(state)// 위처럼 축소가 가능한 이유는 내부적으로 아래와 같은 코드를 띄고 있기 때문이다.@Composablefun rememberUpdatedState(newValue: T): State = remember .. 2024. 9. 24. [Django] Django 설치 및 프로젝트 생성법 # Django 설치MacOs 기준입니다.터미널에 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 를 입력하여 HomeBrew 설치brew install python 를 입력하여 Python 설치pip3 install virtualenv 를 통해 가상환경 설치 (안된다면 pip install virtualenv)pip install django 로 django 를 설치django-admin startproject [프로젝트명] 으로 프로젝트 설치# Project 생성1. Pycharm 의 New Project 를 클릭해준다. 2. 왼쪽에 있는 Django 를 클릭하고 Create 를.. 2024. 9. 23. 이전 1 ··· 11 12 13 14 15 다음