web-dev-qa-db-ja.com

Androidポップインアニメーション

アプリにフローティングアクションボタンを作成しました。これは、表示されない状態で60dpのようなサイズに成長し始め、通常のサイズの56dpにサイズ変更されます。どうすればそれができますか?通常のフェードインアニメーションの方法は知っていますが、ポップインはできません。

11
qwertz

Res/animでアニメーションファイルを作成し、次のようなシーケンシャルスケールアニメーションを使用します。

expand_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:Android="http://schemas.Android.com/apk/res/Android">

    <scale 
        Android:fromXScale="0.0" 
        Android:fromYScale="0.0"
        Android:toXScale="1.1" <!--set the scale value here-->
        Android:toYScale="1.1"
        Android:pivotX="50%"
        Android:pivotY="50%"
        Android:duration="400"/> <!--length of first animation-->


    <scale 
        Android:fromXScale="1.1" <!--From whatever scale you set in the first animation-->
        Android:fromYScale="1.1"
        Android:toXScale="1.0" <!--Back to normal size-->
        Android:toYScale="1.0"
        Android:pivotX="50%" 
        Android:pivotY="50%"
        Android:startOffset="400" <!--start 2nd animation when first one ends-->
        Android:duration="400"/>
</set>

それからあなたの活動で:

Animation expandIn = AnimationUtils.loadAnimation(this, R.anim.expand_in);
actionButton.startAnimation(expandIn);
28
Rich Luick

Overshoot Interpolatorを使用するように切り替えたとき、アニメーションは現在受け入れられている回答よりもはるかにスムーズであることがわかりました。

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:interpolator="@Android:anim/overshoot_interpolator" >

<scale
    Android:duration="700"
    Android:fromXScale="0.0"
    Android:fromYScale="0.0"
    Android:pivotX="50%"
    Android:pivotY="50%"
    Android:toXScale="1.0"
    Android:toYScale="1.0" />

</set>

補間器の例を示すビデオは次のとおりです。 https://www.youtube.com/watch?v=OMOJxBe9KGg

Androidドキュメント: https://developer.Android.com/guide/topics/resources/animation-resource.html#View で触れられているのはここです。

11
beyondtheteal

私は元の答えを取りましたが、より良いポップ効果を与えるためにアニメーションの追加レイヤーを追加しました。

enter code here
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:Android="http://schemas.Android.com/apk/res/Android">
<scale
    Android:duration="100"
    Android:fromXScale="0.0"
    Android:fromYScale="0.0"
    Android:pivotX="50%"
    Android:pivotY="50%"
    Android:toXScale="1.2"
    Android:toYScale="1.2" />

<scale
    Android:duration="100"
    Android:fromXScale="1.2"
    Android:fromYScale="1.2"
    Android:pivotX="50%"
    Android:pivotY="50%"
    Android:startOffset="100"
    Android:toXScale="0.8"
    Android:toYScale="0.8" />

<scale
    Android:duration="100"
    Android:fromXScale="0.8"
    Android:fromYScale="0.8"
    Android:pivotX="50%"
    Android:pivotY="50%"
    Android:startOffset="100"
    Android:toXScale="1.0"
    Android:toYScale="1.0" />
</set>
1
Blain Ellis