본문 바로가기

컴포즈11

[Android-Compose] 안드로이드 컴포즈 rememberLauncherForActivityResult(registerForActivityResult)사용법 이번 포스팅은 XML에서 액티비티끼리 데이터를 주고받을 때 사용하는 registerForActivityResult를 Compose에서 사용하는 방법을 공부해 보겠다! 만약 프로젝트 구성을 Compose Only면 필요 없을지도 모르지만 XML + Compose을 혼합해서 사용한다면 Compose -> Acltitly -> 원래 Compose로 데이터를 전달해야 할 경우가 생긴다. 이럴 경우 어떤 식으로 해결하는지 아래 예제로 알아보자! # 사용법 공식 문서에서 보면 이미지를 가져오는 예제가 있다. 보통 예제는 권한을 확인하거나 공식 문서처럼 이미지를 가져오는 예제이다. 여기서는 간단한 데이터를 가져오는 예제를 할 것이다. 예제의 순서를 설명하자면 1. Composable 함수인 A Screen에서 Act.. 2023. 9. 27.
[Android-Compose]안드로이드 컴포즈 백 버튼/ 뒤로가기 처리 (onbackpressed) 이번 포스팅은 안드로이드 컴포즈에서 백 버튼/뒤로 가기 처리를 하는 방법을 알아보겠다. 얼마전 컴포즈로 만들고 있는 프로젝트에서 백 버튼/뒤로 가기 처리를 해야 하는 상황이 생겼다. 기존 XML이였으면 onbackpressed override 해서 처리했을 텐데 컴포즈에서는 그런 방법이 안돼서 구글링을 해보았다. 그랬더니 생각보다 정말 간단했다! 바로 아래 코드 처럼 BackHandler를 호출해 스코프 안에서 하고 싶은 작업을 처리하면 된다. @Composable fun TestScreen(){ BackHandler { // todo Back버튼 처리 로직 } // todo Code } 2023. 7. 30.
[오류] java.lang.IllegalArgumentException: Navigation destination that matches request NavDeepLinkRequest 이번 포스팅은 개발하는 프로젝트에서 컴포즈 NavDeepLink를 이용해서 데이터를 넘겨주고 있었다 넘겨주는 인수가 URL형식이라서 평소대로 딥링크 안에 인수를 추가해 넘겨줬다 하지만 아래와 같은 오류가 발생했다. java.lang.IllegalArgumentException: Navigation destination that matches request NavDeepLinkRequest # 오류 원인 Navigation의 routes는 url과 동등하기 때문에 URL 내에 다른 URL을 전달해야 하는 경우엔 인코딩해줘야 하는데 인코딩을 안 하고 바로 URL주소를 넘겨줬기 때문에 오류가 발생했다. # 해결 방법 방법은 간단하다 아래의 코드를 사용해 URL을 인코딩해서 넘겨주면 된다. URLEncoder... 2023. 7. 30.
[Compose-Iibrary] 컴포즈 CircularProgressIndicator Background 라이브러리 이번 포스팅은 작지만 직접 배포한 라이브러리에 관해 포스팅을 하겠다. 나는 개발하면서 한 번쯤은 내가 만든 라이브러리를 배포해 보고 싶었다. 그래서 개발하고 있는 회사에 Compose버전이 낮아서 CircularProgressIndicator Background를 지정해 줄 수 없는 문제가 있었다. 가장 쉬운 방법은 Compose버전을 올리면 되는것이였는데 다들 알다시피 어떠한 라이브러리 버전이나 SDK버전을 올리면 생각지도 못하는 이슈가 많이 발생하기 때문에 시간이 없는 상황에서는 버전을 올리지 않고도 해결할 수 있는 방법을 찾아야 했다. 그래서 구글링을 통해 라이브러리가 있는지 확인해 봤는데 마땅히 사용할 만한 게 없었다. 그래서 직접 구현방법을 찾아서 해결했다. 이러한 과정을 통해 나 같은 사람이 .. 2023. 6. 11.
[Android-Compose] Spacer를 이용해 간단한 선 만들기 이번 포스팅은 정말 간단한 포스팅이다. 개발 시 간단한 수직 선이나 수평선을 만들어야 할 때가 있다. 그럴 때 컴포즈에서는 어떤 식으로 처리하는지 알아보자! 우선 많은 방법들이 있지만 이번 예제에서는 Spacer()컴포저블 함수를 사용해 볼 것이다. Spacer함수는 보통 컴포넌트 간의 공간을 만들고, 레이아웃의 일부 영역을 비워두기 위한 용도로 사용하는데 간단한 선도 만들 수 있다. 그럼 아래 예제를 통해 어떤 식으로 만드는지 알아보자! # 수직 선 만들기 // 너비가 1dp인 수직선 만들기 Spacer(modifier = Modifier .width(1.dp) .fillMaxHeight() .background(Color.Black) ) 이런 식으로 width값을 주어 간단한 수직선을 만들 수 있다... 2023. 5. 25.
[Android-Compose] 안드로이드 컴포즈 Text HyperLink (텍스트 하이퍼링크) 적용하기 이번 공부 노트는 Android-Compose에서 텍스트 내용 중 하이퍼링크를 적용하는 법을 알아보겠다. 아래 코드는 스택오버플로우에서 구했는데 정확히 그 링크를 찾지 못하였다..ㅜㅜ # 적용 코드 import android.os.Build import android.text.SpannableString import android.text.style.URLSpan import android.text.util.Linkify import androidx.compose.foundation.gestures.detectTapGestures import androidx.compose.foundation.text.selection.SelectionContainer import androidx.compose.mater.. 2023. 1. 15.