-
반응형
안녕하세요, 하루플입니다.
앱을 개발할 때 여러 애니메이션을 적용하게 되면서 애니메이션 클래스를 따로 만들어두고 함수만 가져와서 쉽게 사용할 수 있도록 개발하고 있습니다.
이번에는 뷰 사이즈를 조절하는 코드 두가지를 알려드리겠습니다.
아래는 뷰 가로 사이즈를 변경하는 코드입니다.
fun View.animateViewWidth(duration: Long, startWidth: Int, endWidth: Int) { val animation = object : Animation() { override fun applyTransformation(interpolatedTime: Float, t: Transformation) { val newWidth = (startWidth + (endWidth - startWidth) * interpolatedTime).toInt() val params = this@animateViewWidth.layoutParams as ViewGroup.LayoutParams params.width = newWidth this@animateViewWidth.layoutParams = params } } animation.duration = duration this@animateViewWidth.startAnimation(animation) }
사용할 때는 binding.textView.animateViewWidth() 이렇게 사용하면 됩니다.
위 코드의 width를 height로 바꿔서 높이를 바꾸는 애니메이션을 적용할 수 있습니다.
아래는 ValueAnimator를 이용해 뷰 가로 사이즈를 변경하는 코드입니다.
작동 결과는 위 코드와 동일합니다. 두가지 중 더 보기 쉬운 코드로 작성하면 될 것 같습니다.
fun View.animateViewWidth(duration: Long, startWidth: Int, endWidth: Int) { val valueAnimator = ValueAnimator.ofInt(startWidth, endWidth) valueAnimator.addUpdateListener { animation -> val newWidth = animation.animatedValue as Int val params = this@animateViewWidth.layoutParams as ViewGroup.LayoutParams params.width = newWidth this@animateViewWidth.layoutParams = params } valueAnimator.duration = duration valueAnimator.start() }
반응형'개발 > Android' 카테고리의 다른 글
[Kotlin] 안드로이드스튜디오 다양한 형식의 자료형 Intent 활용 방법 (0) 2023.04.06 [Android] 이펙티브 코틀린 3장 재사용성 (0) 2023.03.20 [Kotlin] 안드로이드스튜디오 RecyclerView 스크롤시 데이터가 섞이는 문제 해결방법 (0) 2023.03.07 안드로이드스튜디오 xml 프리뷰가 표시되지 않는 문제 (0) 2023.03.06 안드로이드 대형 화면 플랫폼 최적화 (0) 2023.03.05 댓글