9

2 つのボタンが消えるまで縮小し、その後元のサイズに戻るシーケンシャル アニメーションを作成したいと考えています。実行すると、アニメーションなしでボタンが消えます

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

    <scale
        android:fromXScale="1"
        android:toXScale="0"
        android:fromYScale="1"
        android:toYScale="0"
        android:duration="400"
        android:pivotX="50%"
        android:pivotY="50%"
        /> 

    <scale
        android:startOffset="700"
        android:fromXScale="0"
        android:toXScale="1"
        android:fromYScale="0"
        android:toYScale="1"
        android:duration="400"
        android:pivotX="50%"
        android:pivotY="50%"
     /> 

</set>  

Animation sgAnimation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.shrink_grow);
btPrimary.startAnimation(sgAnimation);
btSecondary.startAnimation(sgAnimation);
4

6 に答える 6

16
val scaleDown = ObjectAnimator.ofPropertyValuesHolder(
    view,
    PropertyValuesHolder.ofFloat("scaleX", 0.5f),
    PropertyValuesHolder.ofFloat("scaleY", 0.5f)
)
scaleDown.duration = 2000
scaleDown.repeatMode = ValueAnimator.REVERSE
scaleDown.repeatCount = ValueAnimator.INFINITE
scaleDown.start()

デモ

于 2019-05-30T07:24:12.457 に答える
11

以下は、(無限に) 機能する拡大/縮小アニメーションです。もちろん、アニメーションの繰り返し回数を設定しても機能しませんが、自分でカウンターを追加して停止することができます。

    final ScaleAnimation growAnim = new ScaleAnimation(1.0f, 1.15f, 1.0f, 1.15f);
    final ScaleAnimation shrinkAnim = new ScaleAnimation(1.15f, 1.0f, 1.15f, 1.0f);

    growAnim.setDuration(2000);
    shrinkAnim.setDuration(2000);

    viewToAnimate.setAnimation(growAnim);
    growAnim.start();

    growAnim.setAnimationListener(new AnimationListener()
    {
        @Override
        public void onAnimationStart(Animation animation){}

        @Override
        public void onAnimationRepeat(Animation animation){}

        @Override
        public void onAnimationEnd(Animation animation)
        {
            viewToAnimate.setAnimation(shrinkAnim);
            shrinkAnim.start();
        }
    });
    shrinkAnim.setAnimationListener(new AnimationListener()
    {
        @Override
        public void onAnimationStart(Animation animation){}

        @Override
        public void onAnimationRepeat(Animation animation){}

        @Override
        public void onAnimationEnd(Animation animation)
        {
            viewToAnimate.setAnimation(growAnim);
            growAnim.start();
        }
    });     
于 2013-04-26T08:31:37.787 に答える
5

使用 android:repeatMode="reverse" android:repeatCount="infinite"すると、無限に繰り返されます。トゥイーンアニメーションで使用しています。

于 2013-04-26T09:22:46.110 に答える