Android

    [Android Dialog] 1. Compose Dialog를 이용해 커스텀 다이얼로그 만들기

    Compose에서 사용할 수 있는 다이얼로그의 종류 Compose에서는 두가지 종류의 Dialog를 사용할 수 있다. Dialog : 커스텀한 다이얼로그를 생성 AlertDialog : 미리 정의된 스타일에 따라 Dialog를 생성 Dialog를 이용하면 커스텀한 다이얼로그를 생성할 수 있으며, AlertDialog 함수는 정해진 스타일에 따라 Dialog를 생성한다. 둘 모두 장단점이 있다. Dialog를 사용하면 다이얼로그를 만드는데 시간이 오래 걸리지만 필요한 디자인을 충분히 적용할 수 있다. AlertDialog를 사용하면 미리 정의되어 있는 스타일을 사용할 수 있어 다이얼로그를 만드는데 시간이 적게 걸리고 코드를 직관적으로 만들 수 있지만 정해진 스타일대로만 정의가 가능하다. AlertDialo..

    [Android Compose Material] 2. Compose TextField 이용해 텍스트 출력하기 : Stateless한 Compose에서 TextField는 어떻게 사용되어야 하는가?

    Stateless한 Compose의 TextField TextField란 텍스트를 입력하는 UI이다. 이 UI는 두가지 부분으로 구성된다. 텍스트를 입력하는 부분(User Interaction) 텍스트를 저장하는 부분(State) 텍스트를 입력하려면 TexrField에 입력된 Text의 상태(State)가 있어야 한다. 기존의 xml에서의 TextField는 Stateful해서 자신의 Text 상태를 직접 저장했다. 즉 위 두가지 부분이 모두 TextField에 존재했다. 하지만, Compose는 Stateless하기 때문에 TextField에는 Text의 상태를 저장하는 공간이 없다. 즉, Compose의 TextField는 텍스트를 입력하는 부분만 있고, 텍스트를 저장하는 부분이 없다. Textfie..

    [Android CoroutineScope] 1. Activity, ViewModel에서 올바른 CoroutineScope 사용법 : lifecycleScope과 viewModelScope의 활용

    Android에서 올바른 CoroutineScope를 사용해야 하는 이유 CoroutineScope는 Coroutine Job이 실행되는 Scope이다. CoroutineScope가 해제되면 CoroutineScope에 속한 Coroutine Job들은 모두 해제된다. 따라서 만약 CoroutineScope이 안드로이드 구성요소(Activity, ViewModel)의 Lifecycle에 따라 올바로 할당 해제되지 않는다면 해제되어야 하는 Job들이 계속해서 동작해서 Memory Leak으로 이어진다. 예를들어 App의 Lifecycle동안 유지되는 GlobalScope를 1초마다 string을 내보내는 flow를 collect하기 위해 사용해보자. class MainActivity : ComponentA..

    감성적인 디데이 앱 심플데이 : 광고 적은 끝판왕 앱

    안녕하세요! 오늘은 감성적인 디데이 앱 심플데이를 소개드리려고 포스팅을 하게되었습니다. 심플데이는 다음과 같은 특징을 가지고 있습니다. 최신 기술을 이용해 만들어져 최고의 성능을 가지고 있습니다. 감성적인 UI를 가지고 있습니다. 광고가 없습니다. 위젯, 상단바 고정, 알람 등 사용자를 위한 편의 기능이 모두 지원됩니다. 아래에서 감성적인 UI를 한번 같이 살펴봐요! 심플데이는 감성적인 UI를 가진 어플리케이션입니다. 다양한 모양의 위젯을 지원하며, 자유롭게 커스터마이징이 가능합니다. 상단바 고정기능이 지원됩니다.

    [Coroutine] 2. 코루틴을 사용하기 위한 라이브러리 설정하기

    코틀린과 코루틴 코루틴은 코틀린 언어의 기본 기능으로 내장되어 있다. 따라서 별도 설정 없이도 코루틴을 위한 저수준 API를 사용할 수 있다. 하지만, 언어에 내장된 기능만으로는 launch나 async 같은 고수준 API는 사용할 수 없다. launch나 async 같은 고수준 API는 Jetbrains 사에서 배포한 kotlinx-coroutines 라이브러리의 기능으로, coroutine-core(org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3) 라이브러리에 대한 의존성을 설정해줘야 사용할 수 있다. 이를 위해서는 다음과 같은 블록을 build.gradle 파일에 추가해야 한다. dependencies { implementation 'org.jetbrai..