Computer/android

220405 애니메이션 훑기

COCSOS 2022. 4. 5. 00:57

안드로이드 애니메이션

Animation UseCase

Click Animation?
AnimatedStateListDrawable
state 에 따라 변경 가능



iv.setOnClickListener{
it.isSelected = true;
}

AnimatedVectorDrawable


->vector drawable? 개발자 손이 감

shape Shifer
PathData 간 morph효과

ripple

Activity, Fragment 전환 시 콘텐츠 이어지는 것처럼 보여주기

프로필 사진을 확대하거나
이미지 목록 화면에서 사용할때

transition 동일한 이름으로 설정해서 연결



-> 실행
ActivityCompat.startActivity(context, intent,
!!! ActivityOptionsCompat.makeSceneTransitionAnimation(context, view, view.transitionName).toBundle!!!)

-> 수신
override fun onCreate(savedInstanceState:Bundle?){
window.sharedElementEnterTransition = //윈도우의 속성을 지정해줘야한다.
TransitionSet().apply{
interpolator = Overshootinterpolator(0.7f) //튕기는 느낌(바운스)
ordering = TransitionSet.ORDERING_TOGETHRER
addTransition(ChangreBounds().apply{
pathMotion = ArcMotion() //일직선이 아닌 부드럽게 이동하는 아크모션
})
addTransition(ChangeTransform()) //센터크롭->센터인사이트로 스케일 타입 변경 등
addTransition(ChangeClipBounds())
addTransition(ChangeImageTransform())
}
}
// 추가적인 세팅 도 있다.
super.onCreate(savedInstanceState)
}

Activity / Fragment 화면 전환 시

단순 animation 설정

tab 좌우 이동?
액티비티에선
activity.overridePendingTransition()
fragment에선
fragmentManager.beginTransition
.setCustomAnimation(
R.anim.slide_in_right, //enter
R.anim.slide_out_left, //exit
)
.replcae()
.commit()

묶어서



공통으로

  <alpht />

  <translate/>
  <sclae/>
  <rotation/>
  <set /> <!--중첩가능-->

TransitionManager

상태에 따라 layout이 변경되어야하는 경우
TransitionManager 등을 사용할 수 있다.

if constraint Layout을 사용하고 있다면 guideline을 활용하는 것이 편리함
parent에 chain을 거는 대신 bottomGuideLine, barrier 등으로 변경하는 등.

사진 편집 모드 / 폴더블 상태 등에서 사용하면 좋을듯

val layout = binding.root
val constraintSet = ConstraintSet().apply{
    clone(layout)
    if(fold){
        setGuidelinePercent(R.id.fold_guide, 0.5f)
    }else{
        setGuidelinePercent(R.id.fold_guide, 1f)
    }
}

TransitionManager.beginDelayedTransition (layout)
constraintSet.applyTo(layout)

이외에도

Animator, ViewPropertyAnimator, DynamicAnimation, LayoutTransition,CircularReveal,MotionLayout
등 다양함