※Notes記事では、英語のセッション動画やポッドキャストの内容を(雑に)英語でメモに書き残すことを行っています。本記事は、あくまで動画を見ながら、参考程度に読んでいただくことを想定しています。Notes記事には雑メモ程度のものだったり、書き起こしのようなものもあります。これから実際の動画を見る際には、本記事の内容が少しでもお役に立てば幸いです。(内容において不備、誤字脱字等ありましたら気軽にご連絡いただけると嬉しいです!m(__)m)
本記事は、Get Animated (Android Dev Summit ‘18)に関する記事です。

Android Animation APIs#
View Animations
Value Animator
Object Animator
View Property Animator
Transitions
Animated Vector Drawable
Physics
MotionLayout
android.view.animation#
is now consider deprecated
Measure => Layout => Draw
- android.view.animation is only applied in Draw process
WindowAnimation only accepts android.view.animation so it should be used only here, but otherwise consider it as deprecated
You may use it in FragmentTransaction
- API also accepts Android animator so prefer animator
When to use which Animator#
ObjectAnimator - general purpose, property animator
ValueAnimator - custom animation
ViewPropertyAnimator
Multiple properties on the same View
Fire and forget
PropertyValuesHolder - multiple properties on the same object
AnimatorSet - choreograph a set of animations
AnimatedVectorDrawable#
When to use#
Icon animation
Fire & forget animations
Performance critical
Physics#
Physics-based Animation#
Interruptible
Continuity
Realistic Look
Transitions#
Shared element activity transitions
Window content enter/exit
Modularize animations
Simple changes
Motion / Animation#
Helper#
In ConstraintLayout 2.0, all the helpers are exposed for achieving encapsulated behaviors
ConstraintLayout utility
Apply it to a set of widgets
Supported in Android Studio
Use Animation APIs in helpers to promote reuse
E.g. Circular Reveal:
@Override
public void updatePostLayout(ConstraintLayout container) {
super.updatePostLayout(container);
if (mContainer != container) {
int rad = (int) Math.hypot(mComputedMaxY - mComputedMinY, mComputedMaxX - mComputedMinX);
Animator anim = ViewAnimationUtils.createCircularReveal(this, (int) mComputedCenterX - getLeft(), (int) mComputedCenterY - getTop(0, 0, rad);
anim.setDuration(2000);
anim.start();
}
mContainer = container;
}```<com.example.CircularRevealHelper android:id="@+id/helper" android:layout_width=“wrap_content” android:layout_height=“wrap_content” android:background="@drawable/lake" app:constraint_referenced_ids=“imageView” />
### MotionLayout
- Only two states: Start to End
- Where it shines
- Declarative motion
- Bespoke motion
- Touch-driven motion
### MotionLayout: Library
- Part of ConstraintLayout 2.0
- Released at Google IO'18
- Built upon ConstraintLayout 1.1
- Alpha 2
# 📝
- `android.view.animation`はwindow animationには現状必要だが、それ以外のアニメーションには別のAPIを利用するほうが良さそう
- 今後MotionLayoutが出てきてものすごいアニメーションを表現できるようになると思うが、既存APIとは適材適所で使い分けする必要がありそう
- MotionLayoutの説明の部分で住友さんのツイッターアカウントが取り上げられていてめちゃ驚いた