本日はタイトルの通り、Android
で View
の background
リソースをアニメーションさせながら変更する方法を紹介したいと思います👩🌾
それではやっていく
まずは、アニメーションの初期状態の drawable
とアニメーション後の drawable
をそれぞれ定義しておきます。今回は border_radius_12dp.xml
という drawable
ファイルを初期値として border_green_radius_12dp
というファイルをアニメーション後の値として定義しました。
次に上記で作成したファイルを使用して、アニメーションのための drawable
を下記のように作成します。
<?xml version="1.0" encoding="UTF-8"?> <transition xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/border_radius_12dp" /> <item android:drawable="@drawable/border_green_radius_12dp" /> </transition>
作成したアニメーションの drawable
を background
としてレイアウトに設定します。
android:background="@drawable/animation_drawable"
最後に、View
クラスから下記のように startTransition
を呼び出すことで background
をアニメーション付きで変更させることができます。
val transition = textView.background as TransitionDrawable transition.startTransition(150)
TestDrawable
は2つの drawable
リソースをクロスフェードさせる drawable
オブジェクトです。ちなみに、android:background
で設定されている drawable
が TransitionDrawable
でない場合はクラッシュするので注意が必要です。
TestDrawable
について詳しく知りたい場合は下記を参照してください。
という感じで本日も以上になります。
参考
- https://developer.android.com/guide/topics/graphics/drawable-animation?hl=ja
- https://stackoverflow.com/a/3208800/14219079