본문 바로가기
개발/android

View를 서서히 나오고 사라지게 하는 간단 방법

by 매몰 2022. 3. 13.

Activity를 전환할때 서서히 나오고 사라지는 등의 애니메이션을 넣을 수 있다

당연히 Activity가 아닌 일반 View 도 가능하다

 

하지만 View 에서는 한가지 주의할 점이 있다.

Activity는 전환 애니메이션을 마치면 자동으로 생성되거나 없어지지만

View는 그렇지 않다는 것이다.

즉, 애니메이션이 시작 또는 끝날때 View를 부모뷰에서 빼고 넣거나 보이게 또는 보이지 않게 처리 해주어야 한다.

 

 

애니메이션을 불러와 시작하는 코드

 

//나오기
fun startAnimationWithShow(context: Context, view: View, id: Int) {
    view.visibility = View.VISIBLE  //애니메이션 전에 뷰를 보이게 한다
    view.startAnimation(AnimationUtils.loadAnimation(context, id)) //애니메이션 설정&시작
}

//사라지기
fun startAnimationWithHide(context: Context, view: View, id: Int) {
    val exitAnim = AnimationUtils.loadAnimation(context, id)    //애니메이션 설정
    exitAnim.setAnimationListener(HideAnimListener(view))   //리스너를 통해 애니메이션이 끝나면 뷰를 감춘다
    view.startAnimation(exitAnim) //애니메이션 시작
}

 

 

애니메이션이 끝날때 이벤트를 잡기 위한 리스너

 

//애니메이션 리스너
class HideAnimListener(private val view: View): Animation.AnimationListener {
    override fun onAnimationStart(p0: Animation?) {

    }

    //애니메이션이 끝나면 뷰를 감춘다
    override fun onAnimationEnd(p0: Animation?) {
        view.visibility = View.GONE
    }

    override fun onAnimationRepeat(p0: Animation?) {

    }

}

 

 

에니메이션 동작 

여기서는 간단한 예로 투명도를 조절해 서서히 나오고 들어가게 했다.

크기나 위치가 변경되는 등의 구미에 맞는 애니메이션을 넣으면 된다

 

//enter.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <alpha android:fromAlpha="0" android:toAlpha="1"
        android:duration="300"/>

</set>

 

//exit.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <alpha android:fromAlpha="1" android:toAlpha="0"
        android:duration="300"/>

</set>

 

 

Activity 에서 동작을 각각 실행해 보자

 

startAnimationWithShow(this, myView, R.anim.enter)

 

startAnimationWithHide(this, myView, R.anim.exit)

 

 

도움이 되셨다면~ 정성으로 빚은 저희 앱!  많은 이용 바래요:)

 

https://meorimal.com/index.html?tab=spaceship

 

우주선 - AI의 좌출우돌 투자 생존기

미리 맛보는 인공지능 투자!

(주)머리말 meorimal.com

 

https://meorimal.com/subway.html

 

지하철어디있니

더이상 고민하지 마세요. 뛸지 말지 딱 보면 알죠.

(주)머리말 meorimal.com

 

 

사업자 정보 표시
주식회사 머리말 | 고영진 | 서울특별시 송파구 중대로 135 서관 10층 (가락동, 아이티벤처타워) | 사업자 등록번호 : 524-88-00727 | TEL : 010-9990-3674 | Mail : gyjmeba@hanmail.net | 통신판매신고번호 : 2017-서울강남-03941호 | 사이버몰의 이용약관 바로가기