최신 글
-
Android
[Android] Bitmap 이미지 블러 처리하기 (RenderNode)
RenderScript -> RenderNode기존 이미지 블러 처리에 사용되던 RenderScript가 Android12 부터 deprecated 되었습니다.RenderScript 대신 RenderNode를 사용하는 코드를 공유하도록 하겠습니다. private const val BITMAP_SCALE = 0.6f private const val BLUR_RADIUS = 5f private fun blurImageAboveOs12(image: Bitmap): Bitmap? { val width = Math.round(image.width * BITMAP_SCALE) val height = Math.round(image.height * BITMAP_SCALE) va..
-
Android
[Android] Compose의 remember 그리고 MutableState (TextField 값 바꾸기)
Compose를 사용하다 보면 기본적으로 쓰이는 remember, 그리고 MutableState 에 대해 알아보겠습니다.그에 앞서 먼저 기본적인 Compose 수명 주기에 대해 설명하겠습니다. 컴포저블(Composable) 수명주기컴포저블의 생명주기는 비교적 간단한 총 3단계로 이루어져 있습니다. Composition에 들어가고, 0 혹은 그 이상 다시 그려지고 (Recompose), 그리고 Composition을 나옵니다.Composition은 Jetpack Compose가 컴포저블을 실행할 때 빌드한 UI에 관한 설명입니다. - Init Composition : 처음 컴포저블을 실행하여 컴포지션을 생성- Recomposition : 앱의 상태가 변경되면, 컴포저블을 다시 실행시켜 컴포지션을 변경 ..
-
Android
[Android] Compose 사용 이유, 맛보기
Jetpack Compose 1.0이 출시된지 약 1년이 흘렀습니다. XML에 Databinding을 배워 적용한지도 얼마전인 것 같은데, 금세 또 새로운 기술이 나왔네요. XML을 사용하지 않는 새로운 패러다임이라서 많이 눈길이 갔었는데, Compose를 사용하는 곳도 늘어나고 있는 만큼, 공식 문서의 Compose 사용 이유와 기본적인 내용을 맛보기로 정리해보면서 차차 익혀보려 합니다. Compose 사용 이유 1. 코드 감소 코드를 Kotlin과 XML로 나누지 않고, Kotlin으로만 같은 파일에서 작성하여 코드 추적이 쉬워짐 코드 감소로 유지 관리가 쉬움 Recyclerview 작성 시 Adapter가 사라져 코드가 상당히 감소함 2. 직관적 선언적 API 사용, 읽기 쉬움 특정 활동이나 프래그..
-
Android
[Android] Context란?
Android 개발을 하다 보면 Context라는 것을 굉장히 많이 쓰게 되는데요 항상 자연스레 쓰기만 했던 공기같은 존재라서 오히려 눈에 띄지 않았는데, 많이 쓰는 만큼 중요한 것이라 이번 기회에 Context 개념에 대해 정리해볼까 합니다. 먼저 공식 Android 문서 발췌 내용입니다. 나름대로 번역을 해봤습니다. Context는 어플리케이션 환경에 대한 전역 정보의 Interface이다. 이것은 Android 시스템에서 구현을 제공하는 추상 클래스 (Abstract Class)이다. Context는 어플리케이션 별 리소스와 클래스 접근을 허용해 줄 뿐만 아니라 Activity 시작, Intent 수신과 브로드캐스팅 등의 Application 수준 작업의 호출이 가능하다. 뭔가 저에게는 바로 와닿지..
-
Android
[Android] 레이아웃 Background 둥글게 만들기 (shape, radius, border stroke) - XML
레이아웃 Background를 주어 다양한 형태로 만드는 것에 대해 포스팅 해보겠습니다. 간단하지만 잘 잊어버리가 쉬워서 언제든지 볼 수 있도록 기록을 겸하는 포스팅입니다. 먼저 res/drawable 폴더에 새 Drawable Resource File 을 위와 같이 생성합니다. shape 속성은 도형을 지정하는 속성으로 rectangle, oval, ring, line 이 있습니다. corners에 radius를 지정해주면 모서리 라운딩이 가능합니다. radius의 속성값이 클수록 모서리가 더 둥글게 됩니다. 그 후 배경을 주고 싶은 레이아웃의 background 에 지정해줍니다. 여기에서는 Button이지만 TextView, 레이아웃 View에 모두 적용 가능합니다. 그러면 다음과 같은 형태를 보입니..
-
Java & Kotlin
코틀린의 변수와 자료형 (Kotlin)
코틀린의 자료형코틀린은 기본적으로 null 허용을 하지 않습니다. 즉, 값이 항상 할당되어야 한다는 원칙이 있습니다.코틀린은 참조형 자료형만을 주로 사용하는데,Int, Long 등의 null을 허용하지 않는 변수들은 컴파일 후 기본형 (Primitive Type) 으로 변환되어 JVM에서 실행됩니다. 물음표(?)를 붙이면 코틀린에서도 null 할당이 가능하죠. 예를 들면 Int?, Long? 등은 기본형으로 변환되지 않고 힙(Heap) 공간에 저장됩니다.그래서 null을 가질 수 있는 Int?는 래퍼 클래스인 Integer으로 박싱(Boxing) 되어 처리됩니다. 즉,Int -> Int (Primitive type)Int? -> Integer 이와같이 처리됩니다 코틀린의 동등성 연산 (== , ===)먼..