분류 전체보기

clickable의 기본 클릭 효과 살펴보기 이전 글에서 clickable의 기본 클릭 효과가 매우 어색한 것을 보았다. 이것이 왜 어색하게 느껴졌는지 구현체를 보면서 살펴보도록 하자. 만약 우리가 clickable { } 형태로 클릭 이벤트를 처리한다면 이 내부에서는 DefaultDebugIndication이란 클릭 효과를 사용한다. 그리고 이 클릭 효과는 아래와 같이 구현되어 있다. private object DefaultDebugIndication : Indication { private class DefaultDebugIndicationInstance( private val isPressed: State, private val isHovered: State, private val isFocused..
Jetpack Compose에서 화면 클릭 이벤트 감지하기 Jetpack Compose에서 화면 클릭 이벤트를 감지하기 위해서는 Modifier의 확장 함수인 clickable을 사용하면 된다. 예를 들어 Box 컴포넌트 클릭 시 "조세영의 Kotlin World" Toast를 출력하기 위해서는 다음과 같이 만들 수 있다. class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { Box( modifier = Modifier .size(300.dp) .background(Color.Blue) .clickabl..
Android에서 Canvas가 필요한 이유 Canvas는 Android에서 Custom UI를 간편하게 그리기 위한 다양한 API를 제공해준다. Canvas에서 제공해주는 API를 사용하면 도형, 텍스트를 그릴 수 있고, 애니메이션 또한 만들 수 있다. 또한 Canvas는 그려야 할 도형들이 많을 때, Composable 여러개를 사용해 그리는 것에 비해 자원을 효율적으로 사용한다. 이 때문에 만약 화면이 여러 도형으로 구성되어있고, 도형의 상태(크기, 색상 등)을 계속해서 변경시켜야 하는 작업에서는 Canvas를 사용하는 것이 훨씬 리소스를 적게 사용한다. 이번 글에서는 Jetpack Compose에서 Canvas를 사용하는 간단한 방법에 대해 살펴볼 것이다. Jetpack Compose에서 Canv..
삽입 정렬 알고리즘 이란 무엇인가? 삽입 정렬(Insertion Sort)은 배열의 각 원소를 해당 원소의 앞쪽에 있는 정렬된 배열의 적절한 위치에 삽입하는 방식으로 작동하는 배열이다. 각 원소가 삽입될 때 앞쪽 배열의 정렬된 위치에 들어가서 앞쪽 배열은 무조건 모두 정렬된 상태라는 것을 이용한 알고리즘이다. 예를 들어 아래와 같은 배열이 있을 때 둘째 원소부터 삽입 정렬을 수행한다고 하자. 둘째 원소는 첫 원소의 앞에 삽입된다. 그러면 아래와 같은 형태의 배열이 나오고 포인터를 다음으로 이동시켰을 때 앞쪽 배열([4, 5])은 모두 정렬되어 있는 것을 볼 수 있다. 이를 남은 원소인 6, 2, 1에 대해서 마저 수행하면 정렬이 완료된다. 삽입 정렬에서 특정 값을 특정 위치에 삽입하기 위한 알고리즘 배열..
선택 정렬 알고리즘이란? 선택 정렬 알고리즘은 주어진 배열의 특정 구간에서 최대값을 찾아 해당 구간의 마지막 위치의 값과 위치 변경을 반복해 정렬을 수행하는 알고리즘이다. 이를 간단히 표현하면 다음과 같다. 1. 포인터를 배열의 마지막 위치에 위치시킨다. 2. 배열 맨 앞의 값부터 포인터의 위치까지 값 중 최대값을 찾는다. 3. 찾은 최대값을 포인터의 위치의 값과 교환한 후, 포인터를 하나 앞으로 옮긴다. 4. 1~3의 과정을 포인터가 배열의 맨 앞 원소로 이동할 때까지 반복한다. 위의 방법에서는 최대값을 찾아 마지막 위치의 값과 교환하는 방식을 사용했지만, 최소값을 찾아 맨 앞의 위치의 원소와 교환하는 방법도 선택 정렬 알고리즘이라 부른다. 이번 글에서는 최대값 방식으로 정렬을 하도록 하겠다. 선택 정..
Dev.Cho
'분류 전체보기' 카테고리의 글 목록 (20 Page)