-
Property View프로그래밍/Android 2017. 12. 20. 02:32반응형
의도 : View가 애니메이션으로 이동한 후에도 이벤트가 정확한 위치로 동작했으면 했다.
단, Animation package의 애니메이션은 뷰의 물리적 위치를 이동시키진 않는다. (API Level 1)
https://developer.android.com/guide/topics/graphics/view-animation.html
Property Animation : View의 위치나 속성을 직접 변경한다.
https://developer.android.com/reference/android/view/ViewPropertyAnimator.html
ObjectAnimator와 ViewPropertyAnimator가 있다. 3.0 이상부터 추가되었다.
ObjectAnimator : 뷰의 property 이름을 작성하면 animator를 생성하고 시작한다. (API Level 11)
view를 대상으로 적은 양의 코드로 애니메이션을 동작할 수 있다.
아래는 myView 완전 투명하게 만든다.
ex) ObjectAnimator.ofFloat(myView, "alpha", 0f).start();
두개 이하의 View property를 동작하려면 ObjectAnimator가 적당하다.
ViewPropertyAnimator : ObjectAnimator와 동작이 비슷하다. 단, 더 작성하기 쉬워진 API로 여러 애니메이션을 한 번에 수행할 수 있다. (API Level 12)
문법이 단순하고 code에서만 사용할 수 있으므로, 가볍게 사용할 수 있다
Multiple ObjectAnimator objects
ObjectAnimator animX = ObjectAnimator.ofFloat(myView, "x", 50f);
ObjectAnimator animY = ObjectAnimator.ofFloat(myView, "y", 100f);
AnimatorSet animSetXY = new AnimatorSet();
animSetXY.playTogether(animX, animY);
animSetXY.start();
One ObjectAnimator
PropertyValuesHolder pvhX = PropertyValuesHolder.ofFloat("x", 50f);
PropertyValuesHolder pvhY = PropertyValuesHolder.ofFloat("y", 100f);
ObjectAnimator.ofPropertyValuesHolder(myView, pvhX, pvyY).start();
ViewPropertyAnimator
myView.animate().x(50f).y(100f);
http://pluu.github.io/blog/android/droidkaigi/2016/03/17/android-animation/
예시
full code - https://github.com/SeungwonLee/translationanim
val b1 = findViewById
(R.id.b1) val b2 = findViewById (R.id.b2) val b3 = findViewById (R.id.b3) val textView = findViewById (R.id.text1) textView.setOnClickListener { Toast.makeText(baseContext, "Hi", Toast.LENGTH_LONG).show() } b1.setOnClickListener { _ -> val localAnimation = AnimationUtils.loadAnimation(baseContext, R.anim.translation) localAnimation.fillAfter = true textView.startAnimation(localAnimation) } b2.setOnClickListener { _ -> textView.animate().translationY(174f).duration = 3000 } b3.setOnClickListener { _ -> val transAnimation = ObjectAnimator.ofFloat(textView, "translationY", 0.0f, 174f) transAnimation.duration = 3000 transAnimation.start() } 반응형'프로그래밍 > Android' 카테고리의 다른 글
MediaPlayer:안드로이드에서 간단한 비디오 재생 (0) 2020.11.21 Google i/o 2018 - ExoPlayer 2.8 (0) 2018.06.06 Introduction to Physics-based animations in Android (0) 2017.09.06 과연 Activity/Fragment가 Finished되면 View Model은 어떻게 될까? (0) 2017.08.29 지니모션 Googleplay 설치 (0) 2017.07.31