본문 바로가기

Android16

[Android] NavController와 NavHost: Jetpack Compose의 화면 전환 핵심 요소 오늘은 Android 개발에서 화면 간 이동을 더욱 쉽게 만들어주는 NavController와 NavHost에 대해 알아볼게요!Jetpack Compose에서는 기존 Android 방식보다 간결하고 유연한 화면 전환을 구현할 수 있는 도구를 제공합니다.이 글에서는 NavController와 NavHost의 역할, 동작 방식, 기존 방식과의 차이점을 자세히 설명해 드릴게요. 1. NavController란?NavController는 Jetpack Compose에서 화면 전환의 중심 역할을 담당하는 객체예요.앱에서 여러 화면을 넘나들 때, NavController는 이동을 처리하고 뒤로 가기 같은 기능도 관리해 줘요.화면 전환뿐만 아니라, 뒤로 가기 스택 관리 등 복잡한 로직도 자동으로 처리해 줘요.쉽게 말.. 2024. 11. 18.
[Android] 앱 아키텍처 가이드 오늘은 Android 개발을 위한 아키텍처 가이드라인을 소개해드리려고 해요. Android 앱을 개발할 때 좋은 구조를 가지는 것은 유지보수와 확장성 측면에서 매우 중요해요. 이 글에서는 Google이 추천하는 아키텍처 패턴과 그 구성 요소들을 쉽게 설명해볼게요~1. Android 앱 아키텍처란?앱 아키텍처는 앱의 구성요소들 간의 관계와 기능을 정의해요. 예를 들어, 데이터를 어디에 저장하고, 화면에 어떻게 보여줄지를 정리하는 거죠. 좋은 아키텍처는 앱이 커져도 유지보수가 쉽고, 견고하게 동작하도록 도와줘요. 크게 UI 레이어, 도메인 레이어와 데이터 레이어로 나누어 생각해볼 수 있어요.1. 관심사 분리가장 중요한 원칙 중 하나는 관심사 분리예요. `Activity`나 `Fragment` 같은 UI 클래.. 2024. 11. 12.
[Android]안드로이드 스튜디오 로그(Log) 가이드 오늘은 안드로이드 스튜디오에서 사용되는 로그에 대해서 알아보려고 해요. 로그(Log)는 개발자가 애플리케이션을 디버깅하거나 상태를 확인하는 데 매우 유용한 도구예요. 안드로이드 개발을 하다 보면 로그를 자주 사용하게 되는데요, 그 이유와 사용 방법에 대해 함께 알아볼게요.1. 로그의 중요성안드로이드 애플리케이션을 개발하면서 코드를 실행해도 예상대로 동작하지 않거나, 특정 상황에서 오류가 발생할 때가 있어요. 이럴 때 로그를 활용하면 애플리케이션 내부에서 무슨 일이 일어나는지 쉽게 파악할 수 있어요. 로그는 개발자에게 애플리케이션의 상태를 텍스트로 보여주기 때문에, 문제를 찾고 해결하는 데 큰 도움이 돼요.2. 로그 레벨`Log` 클래스는 다섯 가지 주요 로그 레벨을 제공해요. 각 로그 레벨은 용도와 중요.. 2024. 11. 10.
[Android] Android 자동 테스트 작성 및 유형 자동 테스트는 앱의 기능을 검증하고 코드 변경 후에도 안정적으로 동작하는지 확인하는 중요한 과정이에요. Android에서는 로컬 테스트와 계측 테스트라는 두 가지 주요 테스트 유형을 사용할 수 있습니다. 이 두 가지 테스트의 차이점과 작성 방법을 아래에서 설명해볼게요.1. 자동 테스트 유형로컬 테스트로컬 테스트는 개발자의 컴퓨터(워크스테이션)에서 실행되며, 소규모 코드의 정확성을 검증하는 데 사용돼요. 함수, 클래스, 속성 등의 작은 단위에서 발생할 수 있는 버그를 빠르게 확인할 수 있습니다.특징함수, 클래스, 속성 등 소규모 코드 단위 테스트Android 스튜디오에서 로컬 테스트를 자동으로 실행 가능빠른 피드백과 간편한 실행 환경 제공계측 테스트계측 테스트는 UI 상호작용을 포함한 앱의 실제 환경에서의.. 2024. 9. 6.
[Android] Stateful, Stateless 컴포저블 차이와 상태 호이스팅 Jetpack Compose에서 UI를 구성할 때, 컴포저블 함수는 크게 두 가지 유형으로 나눌 수 있어요: Stateful 컴포저블과 Stateless 컴포저블이에요. 이 두 가지 유형은 상태를 어떻게 관리하고, 어디에 위치시킬지에 따라 구분됩니다. 또한, 상태 호이스팅은 이 두 유형의 컴포저블 간의 상호작용을 효율적으로 관리하기 위한 중요한 개념이에요.1. Stateful 컴포저블이란?Stateful 컴포저블은 내부에 상태를 가지고 있으며, 이 상태는 시간이 지나면서 변할 수 있어요. 이 컴포저블은 자체적으로 상태를 관리하고, 상태의 변화에 따라 UI를 업데이트합니다. Stateful 컴포저블은 주로 간단한 상태 관리가 필요한 UI 요소에서 사용돼요.예시@Composablefun StatefulCou.. 2024. 9. 4.
[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.