Android
-
Android Retrofit2 사용을 위한 비동기 처리Android 2023. 6. 12. 16:59
들어가기 전에Kotlin 언어로 Retrofit 라이브러리를 사용해 외부 서버 DB 에 접근하고 데이터를 가져와 화면에 노출하는 흐름을 만들어내기 위한 비동기 처리 시행착오를 기록해보려고 한다. RetrofitRetrofit 은 애플리케이션에서 네트워크 작업을 수행하기 위한 라이브러리이다. Square 사에서 개발하였으며, RESTful 웹 서비스와 통신하기 위해 사용된다. 간펴하고 직관적인 API 를 제공하여 개발자가 네트워크 작업을 더욱 쉽게 처리할 수 있도록 도와준다. 주요 기능으로는 HTTP 요청을 보내는 기능과 서버로부터 받은 응답을 처리하는 기능이 있다. 네트워크 요청을 정의하기 위해 인터페이스를 생성할 수 있다. 이 인터페이스는 서버와 통신하기 위한 메서드들이 정의되는데, 각 메서드는 HT..
-
Android Studio 멀티 모듈과 Gradle WrapperAndroid 2023. 5. 15. 17:23
들어가기 전에 새로운 코드를 만들 때마다 새 프로젝트를 생성하는 작업을 하는 중에 하나의 프로젝트에서 여러개를 관리할 수 없을까라는 생각과 함께 이 불편함을 해결할 수 있는 멀티 모듈을 발견하게되어 정리해보려고 한다. 증가하는 코드베이스 문제 계속 증가하고 있는 코드베이스에서 확장성, 가독성 및 전반적 코드 품질은 시간이 지남에 따라 감소하는 경우가 많다. 그 원인은 코드베이스 규모가 커지고 있음에도 불구하고 유지관리 담당자가 쉽게 유지관리할 수 있는 구조를 적용하기 위한 적극적인 조치를 취하지 않기 때문이다. 모듈화는 유지관리 가능성을 개선하고 이러한 문제를 방지할 수 있는 방식으로 코드베이스를 구조화하는 방법이다. 모듈화란? 모듈화는 코드베이스를 느슨하게 결합된 독립적인 부분으로 구성하는 방법이다. ..
-
Jetpack compose 레이아웃 - ②Android 2023. 5. 12. 16:58
들어가기 전에 Compose 에서 제공하는 Material 레이아웃의 대해 알아보자. Material 구성요소 및 레이아웃 Jetpack Compose 는 디지털 인터페이스를 만들기 위한 포괄적인 디자인 시스템인 Material Design 구현을 제공한다. Material 구성요소(버튼, 카드, 스위치 등) 및 레이아웃(예: Scaffold)은 구성 가능한 함수로 사용할 수 있다. Material 구성요소는 사용자 인터페이스를 만드는 대화형 구성요소이다. Compose 는 이러한 여러 구성요소를 바로 제공한다. Material 구성요소는 앱의 MaterialTheme 에서 제공하는 값을 사용한다. @Composable fun MyApp() { MaterialTheme { // Material Compo..
-
Jetpack compose 레이아웃 - ①Android 2023. 5. 9. 17:05
들어가기 전에 Jetpack Compose 를 사용하면 앱의 UI를 쉽게 디자인하고 빌드할 수 있지만 Compose 에서 제공하는 구성 요소와 레이아웃 모델의 이해없이 작업하게되면 내가 만든 UI 코드가 어떻게 동작하는지 알 수 없는 상황에 놓이게된다. 필자도 Jetpack Compose 샘플 앱을 만들어보면서 화면으로 확인되는 UI 코드가 이해가 되질 않아 원하는 화면을 만드는데 한계를 느끼고 내용을 정리하려고 한다. Compose 레이아웃 기본사항 요소 구성 요소 레이아웃 요소 그림 Compose는 위 기본사항을 통해 상태를 UI 요소로 변환한다. Compose 레이아웃 목표 Jetpack Compose 의 레이아웃 시스템 구현에는 두 가지 목표가 있다. 고성능 손쉬운 맞춤 레이아웃 작성 구성 가능한..
-
Jetpack compose State 심화Android 2023. 5. 8. 15:56
들어가기 전에 compose 는 state 기반으로 동작하는데 어떻게 동작하길래 state 기반 동작을 하는지 내용을 정리해보려 한다. 상태 및 구성 Compose 를 업데이트하는 유일한 방법은 새 인수로 동일한 컴포저블을 호출하는 것이다. 인수는 UI 상태를 표현한다. 상태가 업데이트될 때마다 재구성(recomposition)이 실행된다. ✔ 초기 컴포지션(composition): 처음 컴포저블을 실행하여 생성된 컴포지션이다. ✔ 리컴포지션(recomposition): 데이터가 변경될 때 컴포지션을 업데이트하기 위해 컴포저블을 다시 실행하는 것을 말한다. 'remember' API를 사용하여 메모리에 객체를 저장할 수 있다. 'remember'에 의해 계산된 값은 초기 컴포지션 중에 컴포지션에 저장되고..
-
Jetpack compose NavigationAndroid 2023. 5. 4. 11:51
들어가기 전에 Jetpack Compose 에서 Navigation 구현에 필요한 내용을 정리해보려고 한다. Navigation Compose Navigation 라이브러리 버전정보를 보려면 여기를 확인하자. // Jetpack Compose Integration implementation("androidx.navigation:navigation-compose:$navVersion") 모듈 레벨에 build.gradle 파일의 선언하면 androidx.navigation.compose 라이브러리를 사용할 수 있게된다. 화면 전환을 지원하는 객체는 rememberNavController() 사용해야한다. val navController = rememberNavController() NavHost( navC..
-
Jetpack compose Scaffold 와 SnackbarAndroid 2023. 5. 3. 18:04
들어가기 전에 Jetpack Compose 에서 Snackbar 구현해보다 만나게되는 여러 에러 상황들을 기록해보려고 한다. 오류 1. 아래 이미지와 같은 오류는 Material3 를 사용하면 발생하는데 Material3 에서는 TextField가 실험용이라서 @ExperimentalMaterial3Api를 작성해주어야 해결이된다. 오류 2. Snackbar를 구현할 때 사용하는 Scaffold 사용법도 Material3 에서 변경되었는데 아래 예시코드를 보면 기존에 사용했던 rememberScaffoldState() 가 SnackbarHostState() 로 변경되어 사용된다는 것이다. 자세한 내용은 여기를 확인하자. // Material2 val scaffoldState = rememberScaffo..
-
Android Native App 개발 - ⑤Android 2023. 4. 25. 11:49
들어가기 전에 Android Studio 개발을 하다보면 내가 개발한 화면을 확인하기 위해 에뮬레이터를 실행해보게 된다. 하지만, 에뮬레이터는 속도가 느려 확인하는데 비용이 많이 발생한다. 몇몇 조건을 충족하게되면 에뮬레이터도 빠르게 실행할 수 있는데 어떠한 방법이 있는지 알아보고 내가 선택한 방법을 작성해보려고 한다. 에뮬레이터를 빠르게 실행하는 방법 하드웨어 가속 사용 : 안드로이드 에뮬레이터는 컴퓨터의 하드웨어를 사용하여 성능을 높일 수 있다. 먼저, 컴퓨터 프로세서가 인텔 VT-x 또는 AMD-V 가상화 기술을 지원하고 BIOS 설정에서 활성화되어 있는지 확인한다. 그런 다음 Android Studio 에서 "환경 설정" > "Appearance & Behavior" > "System Settin..