visibility를 이용한 true,false로 아이콘을 상황에 맞추어 보여주고 지울수 있다.
하지만 갑작스럽게 사라지고 나타난다면 유저로 하여금 당황스러움을 줄 수 있다.
안드로이드에서는 이에 따른 Fade In, Fade Out 애니메이션을 지원하고있고 2가지 방법이 있다.
val fadeIn = ObjectAnimator.ofFloat(Fade In을 적용시킬 뷰, "alpha", 0f, 1f)
//FadeIn되는데 걸리는 시간 (ms)
fadeIn.duration = 400
fadeIn.start()
val fadeOut = ObjectAnimator.ofFloat(Fade Out을 적용시킬 뷰, "alpha", 1f, 0f)
//FadeOut되는데 걸리는 시간 (ms)
fadeOut.duration = 400
fadeOut.start()
fadeIn.addListener(object : Animator.AnimatorListener{
override fun onAnimationRepeat(animator: Animator?) {
// TODO
}
override fun onAnimationEnd(animator: Animator?) {
// TODO
}
override fun onAnimationCancel(animator: Animator?) {
// TODO
}
override fun onAnimationStart(animator: Animator?) {
// TODO
}
})
res - anim directory에 생성.
//Fade In
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="@android:integer/config_shortAnimTime" />
//Fade Out
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="@android:integer/config_shortAnimTime" />
//애니메이션을 생성하고
lateinit var fadeInAnim : Animation
lateinit var fadeOutAnim : Animation
//애니매이션을 초기화해준다.
fadeInAnim = AnimationUtils.loadAnimation(context, R.anim.fade_in)
fadeOutAnim = AnimationUtils.loadAnimation(context, R.anim.fade_out)
fadeIn을 적용시킬 뷰.startAnimation(fadeInAnim)
fadeOut을 적용시킬 뷰.startAnimation(fadeOutAnim)