본문 바로가기

android22

[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.
Compose로 Spinner 구현 및 커스텀 방법 Compose에서 Spinner를 구현한 방법Compose에서 XML의 Spinner를 구현하는 방법을 찾고, 그 과정을 정리한다. 아직 커스텀 부분은 익숙하지 않아서 더 알게 되는 부분이 생기면 추가할 예정이다.1. ExposedDropdownMenuBox 설정var expandStatus by remember { mutableStateOf(false) } // Dropdown의 확장 여부 체크val data = stringArrayResource(R.array.data) // Dropdown 확장 시 아이템 목록var selectedOption by remember { mutableStateOf(data[0]) } // 선택된 아이템expandStatus: Dropdown의 확장 여부를 제어한다.da.. 2024. 9. 20.
[Android]Android Rest 통신중 로딩 화면 만들기 Compose 마이그레이션 및 로딩 상태 관리Compose로 마이그레이션하며 기존과는 다른 방법으로 로딩 상태를 관리하는 방법을 시도해 보았다.1. LoadingStateManager 생성전역 로딩 상태를 관리하는 LoadingStateManager를 생성한다.object LoadingStateManager { private val _isLoading = MutableStateFlow(false) val isLoading: StateFlow = _isLoading.asStateFlow() fun isShow(isShow: Boolean) { _isLoading.value = isShow }}MutableStateFlow를 사용하여 로딩 상태를 관리하며, isShow 함수.. 2024. 9. 18.
[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.
반응형