使用一个动画资源为多个视图设置动画

时间:2014-08-23 14:48:24

标签: android animation

您好!

我是关于为视图点击反馈实现缩放动画。这是一个动画资源:

<set
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator">

    <scale        
        android:fromXScale="1.0"
        android:toXScale="1.4"
        android:fromYScale="1.0"
        android:toYScale="1.4"
        android:pivotX="50%"
        android:pivotY="50%"        
        android:duration="180"
        android:repeatCount="1"
        android:repeatMode="reverse" />    

</set>

活动代码:

private View.OnClickListener mButtonsListener;
mButtonsListener = new View.OnClickListener() {
    @Override
        public void onClick(View v) {
        v.startAnimation(mBounceAnimation);
    }

};
oneBtn.setOnClickListener(mButtonsListener);
twoChb.setOnClickListener(mButtonsListener);
threeChb.setOnClickListener(mButtonsListener);

当我点击其中一个按钮并允许动画完成然后点击另一个按钮时 - 没关系。但是,当我单击一个按钮然后在动画完成之前单击另一个按钮时,第一个按钮上的动画将重新启动。重启是我的问题(( 我想为三个按钮中的每一个都有独立的动画绘制。

你能告诉我怎么做才能解决它。提前谢谢!

1 个答案:

答案 0 :(得分:0)

您只需要为每个onClickListeners以及三个独立的Buttons对象添加独立的Animation,指的是相同的资源。像这样:

    final Animation mBounceAnimation = AnimationUtils.loadAnimation(this,R.anim.scale);
    final Animation mBounceAnimation1 = AnimationUtils.loadAnimation(this,R.anim.scale);
    final Animation mBounceAnimation2 = AnimationUtils.loadAnimation(this,R.anim.scale);

    setContentView(R.layout.activity_animation);

    oneBtn = (Button) findViewById(R.id.buttonAct);
    twoChb = (Button) findViewById(R.id.twoChb);
    threeChb = (Button) findViewById(R.id.threeChb);

    oneBtn.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            v.startAnimation(mBounceAnimation);

        }
    });

    twoChb.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            v.startAnimation(mBounceAnimation1);

        }
    });

    threeChb.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            v.startAnimation(mBounceAnimation2);

        }
    });

这样,您的Animations不会中断,并且会独立行事。