Mobile/Android(Kotlin)

[Android/Kotlin] Layout view visibility Slide Animation 구현하기

개발왕 금골드 2020. 7. 24. 15:43
반응형

안녕하세요 골드입니다.

오늘은 Layout view(Widget)객체에 Slide Animation을 넣는 방법에 대해서 알아보겠습니다. 

 

1. 부모 Layout에 코드 추가

먼저 저의 xml 파일에  구성은 굉장히 간단합니다. ConstraintLayout안에 TextView와 Button이 들어있는 간단한 xml파일입니다. 

부모 레이아웃인 ConstraintLayout 안에 animateLayoutChanges = true를 입력합니다.

 

 

2. .kt 파일에 코드 추가

간단한 슬라이드 애니메이션을 적용하기 위해 TranslateAnimation을 구현합니다. TranslateAnimation은 x, y좌표의 델타값을 매개변수로 입력할 수 있습니다.

https://developer.android.com/reference/android/view/animation/TranslateAnimation

 

TranslateAnimation  |  Android 개발자  |  Android Developers

 

developer.android.com

예를 들어서 여기 코드가 한 줄 있습니다.

TranslateAnimation을 구현한 것인데요, 첫 번째 매개변수를 제외한 모든 값이 0입니다. 델타값이 0이라는 뜻은 변화가 없다는 뜻입니다. fromYDelta, toYDelta 매개변수는 y값에 대한 델타값인데 0이기 때문에 y축으로는 움직이지 않습니다. 여기서 from(~부터)은 시작점이고 to(~어디까지)는 끝점입니다.

 

fromXDelta에 btnCancel.width.toFloat()이라는 코드가 들어가 있습니다. 풀어서 얘기하면 btnCancel이라는 버튼이 있는데 이 버튼의 넓이값만큼 이라는 뜻입니다. (오른쪽으로 갈수록 X값이 커지고 밑으로 내려갈수록 Y값이 커집니다.)

그렇기 때문에 fromXDelta = 버튼넓이, fromYDelta = 0을 입력하면 왼쪽에서 오른쪽으로 슬라이드 애니메이션이 만들어집니다. 

전체 애니메이션 코드입니다.

특정상황을 만족하면 버튼이 왼쪽에서 오른쪽으로(<-) 들어옵니다.

duration은 애니메이션 시간입니다. 위에 코드에서 400 밀리세컨드동안 애니메이션이 실행됩니다.

fillAfter는 애니메이션이 끝난 후에 제자리에 있을 것인지 나타냅니다. true로 애니메이션 후에 제자리에 놓습니다. 

visibility는 View의 속성으로 VISIBLE은 View를 화면에 나타내고, INVISIBLE은 화면에 나타나지 않지만 자리는 차지하고, GONE은 화면에 나타나지 않고 자리도 차지하지 않습니다.

애니메이션을 버튼에 추가한 다음 visibility값을 선언합니다.

 

실행해보겠습니다.

평소에는 버튼이 없다가 특정 조건을 만족시키면 옆에서 스르륵 나타나는 것을 볼 수 있습니다.

 

여기까지 골드였습니다.

감사합니다.

 

 

참고자료 : https://stackoverflow.com/questions/18825200/translation-animation-for-hiding-view

반응형