본문 바로가기
반응형

Android20

[Android] Modifier 전달과 생성의 차이 Jetpack Compose에서 UI 요소의 스타일과 배치를 결정하는 데 중요한 역할을 하는 `Modifier`는 다양한 방법으로 활용될 수 있어요. 특히, `Modifier`를 외부로부터 전달받아 사용하는 경우와 내부에서 새로 생성해 사용하는 경우에는 각각의 목적과 특징이 달라요. 이번 글에서는 이 두 가지 방법의 차이점을 자세히 알아볼게요. 1. 외부로부터 전달받은 Modifier 사용 외부에서 전달받은 `Modifier`를 사용하는 것은 `Composable` 함수의 유연성을 높이기 위한 방법이에요. 이 방법을 사용하면, `Composable`을 호출하는 쪽에서 해당 UI 요소의 레이아웃과 스타일을 자유롭게 설정할 수 있어요.예시@Composablefun GreetingText(modifier:.. 2024. 9. 4.
[Android] Jetpack Compose에서 Scaffold와 Surface의 차이점 Scaffold와 Surface는 UI 레이아웃을 구성할 때 자주 사용되는 두 가지 주요 구성 요소예요. 이들의 기능과 예시, 그리고 차이점에 대해 정리해볼게요.1. ScaffoldScaffold는 Material Design의 기본 레이아웃 구조를 구현하는 데 사용돼요. 전체 화면의 주요 UI 컴포넌트를 배치할 수 있는 프레임워크를 제공하여 앱의 구조를 쉽게 설정할 수 있어요.주로 앱의 메인 레이아웃을 설정할 때 사용돼요. 예를 들어, 상단 앱바, 하단 네비게이션 바, 플로팅 액션 버튼을 포함한 화면을 구성할 때 유용해요.특징앱바: `topBar` 파라미터를 사용하여 화면 상단에 앱바를 배치할 수 있어요.하단 바: `bottomBar` 파라미터를 통해 하단 네비게이션 바를 설정할 수 있어요.플로팅 액션.. 2024. 9. 3.
[Android] 발생할 수 있는 Exception종류와 처리 방법 안녕하세요. 개발을 하다 보면 다양한 예외 상황에 직면하게 돼요. 이러한 예외는 프로그램의 흐름을 방해하고 예상치 못한 종료를 초래할 수 있기 때문에, 각 예외의 특성을 이해하고 적절히 처리하는 것이 중요해요.오늘은 개발 중 자주 발생하는 Exception과 그 처리 방법에 대해 알아볼게요.1. NullPointerException NullPointerException은 null 객체의 속성이나 메서드를 호출하려고 할 때 발생해요. Kotlin은 기본적으로 null-safety를 지원하지만, 자바 라이브러리와의 상호작용 등으로 인해 발생할 수 있어요. val str: String? = nullval length = str!!.length // NullPointerException 발생 이를 방지하기 위해.. 2024. 6. 14.
[Android] Instagram Story 인스타그램 스토리 공유기능 안녕하세요.오늘은 인스타그램 스토리에 공유하는 기능을 구현해보려고 해요.문서에는 Java코드로 되어있지만, 저는 Kotlin코드로 구현해 볼게요.시작하기 전에https://developers.facebook.com/docs/android/getting-started 시작하기 - Android용 Facebook SDK - 문서 - Meta for DevelopersAndroid용 Facebook SDK 시작하기 이 문서에서는 Android용 Facebook SDK를 사용하여 Facebook과 Android 앱의 통합을 시작하는 방법을 설명합니다. Android용 Facebook SDK의 현재 버전은 12.0.0이고 Android API 15가 필요developers.facebook.com우선 해당 기능개발.. 2024. 3. 27.
[Android] 갤러리에서 사진 가져오기 ActivityResultContracts.GetContent을 이용해서 내부 저장소에서 이미지를 가져올게요.이전 글에서 설명한 카메라에서 가져오는 방식과는 다르게 미리 파일을 생성하지 않아도 돼서 더 간단해요.Manifest에 READ_MEDIA_IMAGES권한을 먼저 받아와야하는데, 권한을 받는 과정은 다음에 설명해볼게요.1. registerForActivityResult() 구현이미지를 선택하면 content://로 시작하는 uri를 반환해요.private val pickImageLauncher = registerForActivityResult(ActivityResultContracts.GetContent()) { uri -> uri?.let { imageUri -> //이미지를.. 2024. 3. 23.
[Android] 카메라 앱으로 사진 촬영 기기의 기본 카메라 애플리케이션을 사용하여 사진이나 동영상 촬영과 같은 기본적인 카메라 작업을 실행하기 위해서는 Intent를 활용하면 되는데요.안드로이드 개발자 문서에서는 startActivityForResult()를 사용한 예제로 안내하고 있어요.저는 registerForActivityResult()을 이용해서 구현해 봤어요.1. AndroidManifest.xml에 FileProvider설정FileProvider설정은 AndroidManifest.xml및 file_paths.xml에서 정의해야 합니다. 이미지 파일 저장을 위한 FileProvider구성은 다음과 같아요.AndroidManifest.xml ... ...res/xml/file_paths.xml .. 2024. 3. 22.
[Android] Deep Link 딥링크 딥링크의 작동 원리딥링크는 URL 형태로 제공되며, 이 URL을 클릭하면 앱의 특정 부분으로 직접 이동할 수 있습니다. 웹에서 특정 페이지의 링크를 클릭해 바로 그 페이지로 이동하는 것과 유사한 원리입니다. 하지만 딥링크는 앱 내부의 특정 화면으로 직접 이동한다는 점에서 차이가 있습니다.딥링크의 종류딥링크 : 앱이 이미 설치되어 있어야만 작동하는 링크입니다. 앱이 없으면, 링크를 눌러도 아무 일도 일어나지 않습니다.웹 URL 딥링크 : 앱이 설치되어 있지 않으면 웹사이트로 이동하는 링크입니다. 이 방식으로, 앱이 없어도 내용을 볼 수 있습니다.앱 링크 : 가장 진화된 형태의 딥링크로, 앱이 있으면 바로 앱으로, 없으면 웹사이트로 이동합니다.딥링크의 장점사용자 경험 개선: 사용자는 검색이나 여러 단계의 탐.. 2024. 3. 18.
[Android] MVVM 패턴(Model-View-ViewModel) 복잡한 로직과 데이터 관리, 그리고 반응형 UI를 효과적으로 다루기 위해서는아키텍처 패턴이 필요합니다. 오늘은 MVVM(Model-View-ViewModel) 아키텍처 패턴에 대해 이야기하고자 합니다. MVVM이란? MVVM(Model-View-ViewModel) 아키텍처 패턴은 코드의 구조를 깔끔하게 유지하고, 테스트를 용이하게 하며, 유지보수를 간편하게 만드는 현대적인 솔루션입니다. MVVM은 앱의 비즈니스 로직과 사용자 인터페이스를 효과적으로 분리함으로써 애플리케이션의 확장성과 유지보수성을 대폭 향상시킵니다. MVVM 장점 코드 분리: 비즈니스 로직과 UI 로직의 철저한 분리로 코드 관리가 용이해집니다. 재사용성: 뷰모델을 통한 로직의 재사용성이 높아지며, 다양한 뷰에서 동일한 뷰모델을 사용할 수 .. 2024. 3. 14.
[Android] Retrofit2와 RxJava의 통신 실패 관리 Retrofit2와 RxJava를 함께 사용하면, 비동기 네트워크 요청을 보다 선언적이고 반응형으로 처리할 수 있습니다. 안녕하세요. Android앱 개발 시 네트워크 요청을 Retrofit2과 RxJava 를 많이 이용하는데요. 처음엔 RxJava의 'Throwable'과 Retrofit2의 'Response.isSuccessful() = false인 경우의 차이를 잘 몰랐었어요. 이 글에서는 차이가 무엇인지 설명해보려고 합니다. Retrofit2와 RxJava의 조합 Retrofit2는 HTTP API를 자바 인터페이스로 쉽게 변환해주는 강력한 라이브러리입니다. RxJava와의 결합은 네트워크 요청의 비동기 처리를 더욱 효율적이고 선언적으로 만들어 줍니다. 이 조합을 통해 개발자는 네트워크 상태, 데.. 2024. 3. 13.
반응형