Today's

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

모바일 앱(안드로이드)

안드로이드 앱 만들기 : Jetpack compose back press handling 에대한 이야기

Billcorea 2023. 5. 10. 21:42
반응형

Jetpack Compose는 개발자가 아름답고 반응이 빠르고 효율적인 사용자 인터페이스를 쉽게 빌드할 수 있는 최신 Android UI 도구 키트입니다. Android 개발의 일반적인 작업 중 하나는 뒤로 버튼 누름 이벤트를 처리하는 것입니다.

 

이 블로그 게시물에서는 Jetpack Compose에서 뒤로 버튼 누르기 이벤트를 처리하는 방법을 살펴보겠습니다.

 

Android에서 뒤로 버튼은 거의 모든 Android 기기에 있는 하드웨어 버튼입니다.

 

뒤로 버튼은 앱의 이전 화면이나 활동으로 돌아가는 데 사용됩니다. 뒤로 버튼 누르기 이벤트는 기본적으로 Android 시스템에서 처리하지만 때때로 이 동작을 재정의하고 뒤로 버튼 누르기 이벤트를 직접 처리하려고 합니다.

 

Jetpack Compose에서는 속성을 사용하여 뒤로 버튼 누름 이벤트를 처리할 수 있습니다 onBackPressedDispatcher. 이 onBackPressedDispatcher속성은 뒤로 버튼 누름 이벤트를 처리하기 위해 개체를 OnBackPressedDispatcherOwner등록할 수 있는 인터페이스입니다

 

OnBackPressedCallback.

onBackPressedDispatcher속성을 사용하여 Jetpack Compose에서 뒤로 버튼 누름 이벤트를 처리하는 방법을 살펴보겠습니다 .

 

import androidx.activity.OnBackPressedCallback
import androidx.activity.OnBackPressedDispatcherOwner
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.platform.LocalContext

@Composable
fun BackPressHandler(
    enabled: Boolean = true,
    onBackPressed: () -> Unit
) {
    val backPressedDispatcher = (LocalContext.current as? OnBackPressedDispatcherOwner)?.onBackPressedDispatcher
    val callback = remember {
        object : OnBackPressedCallback(enabled) {
            override fun handleOnBackPressed() {
                onBackPressed()
            }
        }
    }

    DisposableEffect(callback) {
        backPressedDispatcher?.addCallback(callback)
        onDispose {
            callback.remove()
        }
    }
}

 

위의 코드에서 이름이 구성 가능한 함수를 만들었습니다 BackPressHandler. 이 함수는 두 개의 매개변수를 사용합니다.

  • enabled: 뒤로 버튼 누름 이벤트 처리 여부를 지정하는 부울 값입니다. 기본적으로 로 설정되어 있습니다 true.
  • onBackPressed: 뒤로 버튼을 눌렀을 때 호출되는 람다 함수입니다.

함수에서 먼저 속성 에서 개체를 BackPressHandler가져옵니다 . 그런 다음 함수를 사용하여 개체를 만듭니다 . 객체 는 뒤로 버튼을 누를 때 호출되는 함수를 재정의합니다 . 함수 에서 뒤로 버튼 누름 이벤트를 처리하기 위해 람다 함수를 호출합니다

 

. onBackPressedDispatcherLocalContext.currentOnBackPressedCallbac krememberOnBackPressedCallbackhandleOnBackPressedhandleOnBackPr essedonBackPressed

그런 다음 함수를 사용하여 개체에 개체를 DisposableEffect등록 및 등록 취소합니다 . 개체가 생성 되면 메서드를 사용하여 개체 에 추가합니다. 컴포저블이 삭제되면 메서드를 사용하여 객체에서 객체를 제거합니다

 

. OnBackPressedCallbackonBackPressedDispatchercallbackonBackPress edDispatcheraddCallbackBackPressHandlercallbackonBackPressedDis patcherremove

컴포저블을 사용하려면 BackPressHandlerJetpack Compose 계층 구조에서 간단히 호출하고 onBackPressed람다 함수를 전달하여 뒤로 버튼 누르기 이벤트를 처리하면 됩니다.

 

@Composable
fun MyScreen() {
    BackPressHandler(onBackPressed = { /* Handle back button press event */ }) {
        // Screen content
    }
}

MyScreen. 은  BackPressHandler위의 코드에서는 컴포저블 내부에서 컴포저블을 호출했습니다 

 

화면의 내용은 BackPressHandler onBackPressed뒤로 버튼 누름 이벤트를 처리하기 위해 람다 함수를 전달했습니다. 

 


이렇게 오늘도 글 하나를 open GPT을 활용해서 작성해 보았습니다. 직역을 하고 있어서 말의 앞 뒤가  좀 애매한 구석이 없지 않지만, 나름 기술적인 부분에 대해서는 구글 검색을 하는 것만큼이나 기술해 주고 있습니다. 

 

이제 이 코드를 실전에 적용해 보도록 하겠습니다.    도전해 볼 필요가 있는 것 같습니다. 

 

아래는 참고 글  하나 찾아보았습니다.

 

https://medium.com/better-programming/back-press-handling-in-android-jetpack-compose-42d9ed402d40

 

Back Press Handling in Android Jetpack Compose

Create a handler function to customize your back press events

betterprogramming.pub

 

반응형