Today's

길을 나서지 않으면 그 길에서 만날 수 있는 사람을 만날 수 없다

앱만들기 134

습관관리 앱 : Jetpack Compose 광고 페이지 개발 및 성능 개선기

Jetpack Compose 광고 페이지 개발 및 성능 개선기 오늘은 기존 습관 기록 앱에 쿠팡 파트너스 API를 연동하여 광고 상품을 보여주는 페이지를 개발하고, 사용자 경험을 개선하기 위해 이미지 로딩 성능을 최적화하는 과정을 거쳤습니다. 이 글에서는 전체 개발 과정과 마주쳤던 문제들, 그리고 해결 방법을 공유합니다.1. ViewModel 상태 관리 및 API 연동가장 먼저, API 통신 결과를 UI에 효과적으로 전달하기 위해 ViewModel에서 상태 관리를 구현했습니다. API 요청 상태를 Loading, Success, Error로 나누어 관리하는 AdProductState Sealed Interface를 정의하고, 이를 StateFlow로 UI에 노출시켰습니다.// MainViewModel.k..

습관관리 앱 구현 과정 : Jetpack Compose에서 TopAppBar 구현 과정, 동적 버전 표시 및 웹 연동

습관관리 앱 구현 과정 : Jetpack Compose에서 TopAppBar 구현 과정, 동적 버전 표시 및 웹 연동 Jetpack Compose를 사용한 안드로이드 앱 개발 중, 사용자에게 일관된 경험을 제공하기 위해 공통 TopAppBar를 구현한 과정을 공유합니다. 이 글에서는 TopAppBar에 앱 아이콘, 동적으로 가져온 앱 이름과 버전, 그리고 외부 URL로 연결되는 정보 아이콘을 추가하는 방법을 단계별로 설명합니다.1. TopAppBar 구현 위치 결정: MainActivity처음에는 각 화면(HomeScreen)에 TopAppBar를 추가할까 고민했지만, 앱 전체의 일관성 및 확장성을 위해 MainActivity.kt의 MainScreen Composable 내에 Scaffold를 사용해 ..

습관관리 앱, 개발 작업 일지

습관관리 앱, 개발 작업 일지 1. 하드코딩된 한글 문자열의 strings.xml 이전앱 내 하드코딩된 한글 텍스트를 strings.xml로 이동하여 다국어 지원 및 유지보수성을 개선함. 2. AlertDialog를 MaterialDialog로 변경기존 AlertDialog를 com.afollestad.material-dialogs 라이브러리의 MaterialDialog로 교체.다이얼로그의 테마와 색상 문제를 해결하기 위해 theme 속성 및 color.xml을 활용하는 방법을 검토함.3. 다이얼로그 색상 및 테마 적용MaterialDialog에서 배경색 투명 문제 발생 시, theme를 지정하거나 color.xml의 색상 리소스를 활용하여 해결.MaterialDialog의 md_title_color 등..

습관관리, 사용자 경험을 한 단계 위로 (개발 일지)

습관관리, 사용자 경험을 한 단계 위로 (개발 일지)오늘은 기존의 습관 관리 앱을 더욱 똑똑하고 사용자 친화적으로 만들기 위한 대규모 개선 작업을 진행했습니다. 사용자의 작은 피드백에서 시작된 아이디어들이 어떻게 실제 코드로 구현되고, 그 과정에서 어떤 기술적 문제들을 해결했는지 공유하고자 합니다.오늘의 핵심 개선 사항 요약🎨 **UI/UX 개선**: 아이콘과 요일 선택 UI를 더 명확하고 직관적으로 개선.⚙️ **핵심 기능 구현**: '요일 선택'과 '시간 선택'이라는 두 가지 핵심 기능을 새롭게 구현하고, 데이터베이스부터 UI까지 앱의 모든 계층을 수정.🔧 **리팩토링 및 안정성 확보**: 여러 번의 오류와 수정을 거치며, 코드에 남아있던 버그를 잡고 하드코딩된 문자열을 제거하여 코드의 품질과 안..

Wear OS 타일로 실시간 심박수와 운동 시간 표시하기 (ft chatGPT, 예시코드)

Wear OS 타일로 실시간 심박수와 운동 시간 표시하기 이 글에서는 Wear OS의 SuspendingTileService를 이용해 실시간으로 심박수와 운동 시간을 표시하는 타일을 구현하는 방법을 소개합니다. 최신 라이브러리 기반으로 작동하며, 초보자도 이해하기 쉽도록 설명을 덧붙였습니다.1. 프로젝트 설정Gradle 의존성 추가 (build.gradle.kts)dependencies { implementation("androidx.wear.tiles:tiles-material:1.5.0") implementation("androidx.wear.protolayout:protolayout-material:1.3.0") implementation("com.google.android.horo..

Android에서 Hilt + Room + Firebase Realtime Database를 함께 사용하는 구조 설계

Android에서 Hilt + Room + Firebase Realtime Database를 함께 사용하는 구조 설계 이 글은 Android 앱에서 Hilt를 사용한 의존성 주입, Room으로 로컬 DB를 구성하고, Firebase Realtime Database로 클라우드와 데이터를 연동하는 구조를 설계하는 방법을 다룹니다. 예시 코드마다 구체적인 설명과 함께, 주의사항과 실무 팁도 포함되어 있습니다.🧱 프로젝트 구조 개요📁 app/├── di/ // Hilt 모듈 정의├── data/│ ├── local/ // Room 관련 코드│ ├── remote/ // Firebase 관련 코드│ ├── repository/ ..

배드민턴 리그 매니저(가칭) 앱 만들기 : 기능 설계 하기

1. 전체 기능 설계도(텍스트 플로우)[회원 관리] | v[참여자 인식 (Watch)] | v[팀 배정/리그 대진 생성] | v[경기 진행] | \ v \[경기 결과 입력] [심박수 감지 및 알림 (Watch)] | | v |[결과 저장 및 요약] 2. 주요 기능별 상세A. 회원 관리회원 등록 및 목록 조회동호회 정보 관리B. 참여자 인식 및 팀 배정Wear OS Watch와의 연동워치 착용자 자동 인식인원 파악 및 명단 동기화팀 자동/수동 배정복식팀 조합 알고리즘임의/무작위 배정 선택C. 리그 대진표 생성현재 ..

배드민턴 리그 매니저(가칭) 앱 개발 계획서

🔮 M - Mystery & Need"복식 경기, 오늘 몇 명 올까? 누구랑 팀 짜야 하지?"호기심 자극 메인 카피: "워치만 차면 자동 팀 구성된다고?"매 경기, 팀 짜기 너무 번거롭지 않으셨나요?경기 결과는 늘 기억 속에만 남으셨나요?심박수 200 넘는 친구가 있는데, 아무도 몰랐다면?이 앱 하나면, 모든 문제 해결됩니다.❤️ A - Appeal & Affirm"모임 시작 전 워치만 차면 자동으로 참여 등록 끝""알고리즘이 실시간으로 복식 팀 구성!""경기 결과는 자동 저장, 다음 팀도 자동 배정""심박수 200 이상? 워치가 쉬는 시간 알림까지!"우리 브랜드의 철학은 스마트하게 운동을 즐기게 하자는 것.💎 V - Value & Gap기능사용 전사용 후팀 편성수기 작성, 시간 지연자동 구성, 대기..

외국인 관광객을 위한 앱 만들기 : 카테고리 검색 화면 구현

Jetpack Compose로 DropDown과 카테고리 버튼 UI 만들기 이 글에서는 Jetpack Compose로 드롭다운 메뉴를 만들고, JSON 형태의 카테고리 데이터를 3x3 버튼 그리드 형태로 화면에 표시하는 방법을 정리합니다.🟡 1. DropDown (Spinner 형태) 버튼 만들기아래는 Compose의 DropdownMenu를 이용하여 간단한 드롭다운 UI를 구성하는 예시입니다.@Composablefun SimpleDropdownMenu( options: List, onOptionSelected: (String) -> Unit) { var expanded by remember { mutableStateOf(false) } var selectedOption by re..

외국인 관광객을 위한 한국 여행 가이드 앱 개발 일지 - 위치 권한과 구글맵 화면 구현 (Jetpack Compose + Hilt)

외국인을 위한 한국 여행 가이드 앱 개발 일지 - 위치 권한과 구글맵 화면 구현 (Jetpack Compose + Hilt) 오늘은 Jetpack Compose 기반으로 개발 중인 한국 여행 가이드 앱에서인트로 화면 이후 위치 권한을 요청하고, 구글 지도를 표시하는 메인 화면을 구현했습니다.✅ 오늘 구현한 핵심 기능항목구현 방식위치 권한 요청Accompanist Permissions위치 정보 획득FusedLocationProviderClient (Hilt 주입)지도 표시Google Maps Compose기본 위치 fallback서울 시청 (37.5665, 126.9780)권한 거부 시 안내설정 화면으로 유도 (Intent)상단바 겹침 방지statusBarsPadding() 적용📦 Hilt로 FusedL..

반응형