ビュー アニメーション

ビュー アニメーション システムを使用すると、ビューでトゥイーン アニメーションを実行できます。トゥイーン アニメーション は開始点、終了点、サイズ、回転、 その他の一般的な側面も考慮します。

トゥイーン アニメーションでは、一連の簡単な変換(位置、サイズ、回転、 View オブジェクトのコンテンツに対して設定されます。そのため、TextView オブジェクトがある場合、テキストを移動、回転、拡大、または縮小できます。もし 使用すると、背景画像もテキストと一緒に変換されます。animation package は、トゥイーン アニメーションで使用されるすべてのクラスを提供します。

トゥイーンのアニメーションは、一連のアニメーション命令で定義され、XML または Android コード。レイアウトの定義と同様に、XML ファイルを使用することをおすすめします。これは、 アニメーションをハードコードするよりも、再利用可能、切り替え可能にしましょう。下記の例では、XML を使用します( XML ではなく、アプリケーション コードでアニメーションを定義する方法について詳しくは、 AnimationSet クラスと他の Animation サブクラス。

アニメーション指示では、どのような変換をどのようなタイミングで行うかを定義します。 その内容、適用にかかる時間などを考慮します。順次または同時に変換できる - たとえば、TextView のコンテンツを左から右に移動してから回転させることができます。 テキストの移動と回転を同時に行うこともできます。各変換には その変換に固有のパラメータのセット(サイズの開始サイズと終了サイズ) 変更、回転の開始角度と終了角度など)、共通の共通セット パラメータ(開始時間、期間など)を指定します。複数の変換を 開始時刻も同じにします。順次にするには、開始時間を計算します。 直前の変換の実行時間の合計です

アニメーション XML ファイルは、Android の res/anim/ ディレクトリにあります。 できます。ファイルには 1 つのルート要素が必要です。ルート要素は 1 つか、 <alpha> さん、<scale> さん、<translate> さん、 <rotate>、interpolator 要素、または <set> 要素。 (別の <set> を含む場合があります)。デフォルトでは、 アニメーション命令は同時に適用されます。それらを順番に実行するには、 以下の例のように startOffset 属性を指定します。

いずれかの ApiDemos の以下の XML を使用して、伸縮し、同時にスピンと View オブジェクトを回転させます。

<set android:shareInterpolator="false">
    <scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="1.0"
        android:toXScale="1.4"
        android:fromYScale="1.0"
        android:toYScale="0.6"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false"
        android:duration="700" />
    <set android:interpolator="@android:anim/decelerate_interpolator">
        <scale
           android:fromXScale="1.4"
           android:toXScale="0.0"
           android:fromYScale="0.6"
           android:toYScale="0.0"
           android:pivotX="50%"
           android:pivotY="50%"
           android:startOffset="700"
           android:duration="400"
           android:fillBefore="false" />
        <rotate
           android:fromDegrees="0"
           android:toDegrees="-45"
           android:toYScale="0.0"
           android:pivotX="50%"
           android:pivotY="50%"
           android:startOffset="700"
           android:duration="400" />
    </set>
</set>

画面の座標(この例では使用しません)は左上隅が(0,0)で、 右に下がるにつれて増加します

一部の値(たとえば pivotX など)は、オブジェクト自体に対して、または できます。適切な形式(親に対して 50% の場合は「50」、 または「50%」50% ということになります)。

Interpolator を割り当てることで、時間の経過に沿って変換を適用する方法を決定できます。Android には、いくつかの Interpolator サブクラスがあり、 さまざまな速度曲線を指定します(例: AccelerateInterpolator)。 はじめはゆっくりと進めて スピードを上げるように変換を指示しますそれぞれに属性値があり、 表示されます。

この XML を res/anim/hyperspace_jump.xml として保存します。 ディレクトリに配置すると、次のコードはこのファイルを参照し、レイアウトから ImageView オブジェクトに適用します。

Kotlin

AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump).also { hyperspaceJumpAnimation ->
    findViewById<ImageView>(R.id.spaceshipImage).startAnimation(hyperspaceJumpAnimation)
}

Java

ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage);
Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
spaceshipImage.startAnimation(hyperspaceJumpAnimation);

startAnimation() の代わりに、メッセージの開始時間を定義することもできます。 Animation.setStartTime() でアニメーションを作成し、View.setAnimation() でアニメーションをビューに割り当てます。

XML 構文、使用可能なタグと属性の詳細については、アニメーション リソースをご覧ください。

注: アニメーションの移動やサイズ変更の方法にかかわらず、 アニメーションを保持する View の境界は、それに合わせて自動的に調整されることはありません。 ただし、アニメーションはビューの境界を越えて描画され、クリップされることはありません。 ただし、アニメーションが親ビューの境界を越えるとクリッピングが発生します