본문 바로가기

compose11

[Android]Kotlin-DSL와 VersionCatalog Kotlin-DSL을 사용한 Android Studio 프로젝트 설정Android Studio에서 Kotlin-DSL을 사용법을 간단히 설명한다.Kotlin-DSL이란?DSL은 Domain Specific Language 로 도메인 특화 언어 라는 뜻이며, Kotlin-DSL은 Kotlin 언어로 작성된 DSL이다.Gradle 스크립트는 Groovy로 작성되지만, Kotlin-DSL을 사용하면 Kotlin 언어로 작성된다.장점코드를 강조할 수 있다.자동완성이 지원된다.오류 코드가 강조된다.변수 리팩토링이 가능한 향상된 편집환경을 지원한다멀티 모듈 사용 시 중복 의존성 선언이 필요가 없다1. 프로젝트 설정1.1. settings.gradle.kts (Kotlin-DSL) vs settings.gradle .. 2024. 10. 1.
[Android]Compose BottomNavigation 만들기 Compose로 BottomNavigationBar 커스터마이징Compose로 BottomNavigation을 만들고 커스텀하는 방법을 정리한다.1. BottomBar에 Compose 연결BottomBar를 선언하기 위해서는 Scaffold를 사용해야 한다.val currentRoute = navController.currentBackStackEntryAsState().value?.destination?.routeScaffold(bottomBar = { if (currentRoute in listOf(route1.route, route2.route)) { BottomNavigationBar(navController) }})아래 코드는 route1, route2일 때만 BottomN.. 2024. 9. 22.
[Android]Compose에서의 ScroolView 및 이슈 LazyColumn 내부에서 LazyVerticalGrid 높이 문제 해결1.상황 설명LazyColumn 내부에 LazyVerticalGrid를 사용했을 때, 높이를 지정하지 않으면 제대로 조정되지 않는 문제 발생.고정된 높이를 줄 수 없는 유동적인 값이 들어갈 때 발생하는 문제.2.문제 코드 예시 LazyColumn( modifier = modifier,) { item { myColumn1() } item { myColumn2() } item { myColumn3() }}3.원인LazyVerticalGrid는 콘텐츠의 높이가 유동적인 경우, 고정된 높이를 설정하지 않으면 레이아웃이 깨질 수 있음.4.해결 방법heightIn으로 LazyVerticalGrid의 최소/최대 높이를.. 2024. 9. 22.
[Android]HorizontalPager 효과 적용하기 ViewPager2에서 Compose HorizontalPager로 마이그레이션기존 ViewPager2에서 사용했던 효과를 Compose의 HorizontalPager로 최대한 비슷하게 구현했다. 참고한 링크: Medium 글1. 기본 설정HorizontalPager( modifier = Modifier.fillMaxSize(), state = pagerState, contentPadding = PaddingValues(horizontal = 90.dp), pageSpacing = 45.dp)contentPadding: 아이템에 적용할 패딩값 (현재 horizontal 90dp)pageSpacing: 페이지 간 거리 설정 (contentPadding보다 작으면 화면에 보이게 됨)2... 2024. 9. 17.
[Android]Compose 정렬 Compose의 정렬 (Alignment & Arrangement)작업하면서 Compose에서 정렬 기능을 자주 사용하게 되어, 이를 체계적으로 정리할 필요성을 느껴 정리한다. Compose에서는 정렬과 배치를 Alignment와 Arrangement로 구분하여 처리할 수 있다.1. Alignment (정렬)설명: Alignment는 Column, Row, Box에서 자식 View들의 정렬을 지정할 수 있음. Modifier.align()을 통해 세부 정렬 지정 가능.Column 정렬Start: View의 왼쪽 정렬CenterHorizontally: View의 중앙 정렬End: View의 오른쪽 정렬Row 정렬Top: View의 상단 정렬CenterVertically: View의 중앙 정렬Bottom: .. 2024. 9. 17.
[Android]Android Studio 펀치홀/노치 대응 Pixel 7 개발 시 펀치홀 대응법 (Compose)1. 참고 사이트공식 Android 문서 - Insets위 문서를 참고하여 Compose를 중심으로 작성함.2. 기본 사용법상단 Status Bar와 하단 Navigation Bar 인셋 적용 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { Box(Modifier.safeDrawingPadding()) { } }}효과MainActivity에서 safeDrawingPadding()을 사용하면 상단과 하단 영역에 안전한 인셋을 적용.Status Bar 및 Navig.. 2024. 9. 9.
[Android]accompanist-permissions을 사용한 권한 요청과 GPS를 이용한 위치 추적 마이그레이션 도중 추후를 위해 정리 필요성을 느낌1. gradle 설정gps 를 위한 코드와 permission 체크를 위한 gradle을 설정한다permission 체크는 accompanist-permissions를 이용할 것이다version-catalog를 설정해준다google-location = "21.3.0"accompanist-permissions = "0.36.0"google-location = {module = "com.google.android.gms:play-services-location",version.ref = "google-location"}accompanist-permissions = {module = "com.google.accompanist:accompanist-permiss.. 2024. 9. 9.
[Android]Compose에서의 NaverMap NaverMap을 Compose에서 적용하는 방법코드는 https://github.com/fornewid/naver-map-compose를 참고한다.프로젝트 설정: Gradle에 Maven 추가 repositories { maven("https://repository.map.naver.com/archive/maven") }repositories에 Maven URL을 추가한다.Version Catalog를 통한 Gradle 등록 naver_map_compose = "1.7.2" naver_map_location = "21.0.2" naver-map-compose = {module = "io.github.fornewid:naver-map-compose", version.ref = "nave.. 2024. 8. 30.
[Android]Compose의 상태관리 왜 이것을 정리하는가?Compose로 마이그레이션 중 remember를 사용하는 코드들을 발견했다. 이를 알아보니 Compose의 상태 관리와 깊은 연관이 있다는 것을 알게 되었다. 이에 따라 이를 최대한 간단하게 정리해본다.1. Compose의 생명주기Compose의 생명주기는 기존의 Activity나 Fragment와 비교했을 때 훨씬 간단하다. 다음 세 가지 주요 상태가 존재한다.첫 생성 시UI를 구성하는 데이터가 변경되었을 시Composable이 파괴될 때2. remember란?remember는 상태(State)가 변할 때 recomposition이 발생하는데, 이때 이전 상태를 기억해야 할 경우 사용하는 키워드다. 예를 들어, 텍스트를 입력하는 경우 remember를 사용하지 않으면 recomp.. 2024. 8. 30.
[Android]기존 xml 코드를 Compose로 마이그레이션 하며 참고할 것 계속해서 추가해 갈 예정1. Color는 xml의 value가 아닌 코틀린 코드로 관리기존 사용법 #bbdefb #018786Compose 사용법 val BBDEFB = Color(0xffbbdefb) val Color018786 = Color(0xff018786)피드백 Kotlin 변수명 규칙에 따라 숫자로 시작하는 이름을 사용할 수 없으므로, 018786을 Color018786으로 변경했다. 변수명을 명확하게 하기 위해 'Color'라는 접두사를 추가했다. Compose에서는 Color 객체를 직접 Kotlin 코드에서 정의하므로 XML 파일 대신 코드에서 관리하는 것이 좋다.2. drawable의 xml 파일을 ImageVector로 변경기존 사용법 .. 2024. 8. 27.
반응형