본문 바로가기
Android Jetpack Compose/Jetpack Compose

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

by Developer88 2022. 11. 28.
반응형

오늘은 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

댓글