Android Jetpack Compose/Jetpack Compose

Button Selector 구현 방법 # 버튼 눌렸을 때 Interaction Jetpack Compose

Developer88 2022. 11. 28. 00:01
반응형

오늘은 Jetpack Compose에서 Button Selector를 구현하는 방법에 대해서 정리해 보도록 하겠습니다.

 

참고로 예전에 xml로 버튼 selector를 구현하는 방법은 아래 글에 정리되어 있습니다. 

>> Android 에서 Button 눌렸을 때 이미지 변경 방법

 

1. 예전방식 Selector

예전에는 아래와 같이 selector xml을 정의해서, 

pressed를 판별해서 눌려서 true이면 A이미지를, pressed 가 false이면 B이미지를 보여주도록 했습니다.

 

 

2. Compose 방식

Compose에서는 UI상태를 State을 통해서 얻고 변경하게 되는데요.

pressed 상태는 Interaction State을 통해서 얻어올 수 있습니다.

 

val interactionSource = remember { MutableInteractionSource() }
val isPressed by interactionSource.collectIsPressedAsState()

 

 

interactionSource를 아래와 같이 Button에 넣어주면,

이 버튼의 pressed 상태를 얻어올 수 있습니다.

 

 

이제 isPressed를 가지고 무언가를 변경해 봐야 할 텐데요.

이 글에서는 버튼의 배경색깔과 버튼안의 컨텐츠 컬러를 변경해 보도록 하겠습니다.

 

 

클릭해 보면 아래와 같이 변하는 것을 볼 수 있습니다.

그런데 한가지 특이한 점은 배경색을 White로 지정했는데, 약간 회색이 들어간 것을 볼 수 있습니다.

이것은 Button에 Material디자인의 Ripple이펙트가 들어가 있기 때문입니다.

아래와 같이 코드를 바꾸어서 바꾸어서 테스트 해 보겠습니다.

눌렸을 때, 배경색이 Green색이 되도록 하였습니다.

 

 

지정했던 Green Color와 함께 Material 버튼의 Shadow가 들어간 것을 볼 수 있습니다.

 

이상으로 Jetpack Compose에서 ButtonSelector를 사용하는 방법에 대해서 정리해 보았습니다.

728x90