Android动画没有停止

时间:2014-05-13 17:34:04

标签: android animation

我在OnItemClickListener案例中有动画。我想点击第一个按钮播放动画,当我点击第二个按钮,停止第一个动画并开始第二个。但是会发生什么: 当我在案例1上启动第一个动画,然后单击案例2时,启动第二个动画。案例1动画没有停止。 这是我的代码:

gridView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {


                switch (position) {
                case 0:

                    if (mp.isPlaying()) {
                        mp.stop();
                        view.clearAnimation();
                    } else {
                        mp = MediaPlayer
                                .create(MainActivity.this, R.raw.case1sound);

                        mp.start();
                        view.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.scale_anim));
                    }

                    break;

                case 1:

                    if (mp.isPlaying()) {
                        mp.stop();
                        view.clearAnimation();
                    } else {
                        mp = MediaPlayer
                                .create(MainActivity.this, R.raw.case2sound);

                        mp.start();
                        view.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.case1));
                    }

                    break;

我的动画XML文件

<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <scale
        android:duration="500"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:pivotX="50.0%"
        android:pivotY="50.0%"
        android:repeatCount="3"
        android:startOffset="0"
        android:toXScale="0.90"
        android:toYScale="0.90" />


</set>

2 个答案:

答案 0 :(得分:0)

您的代码无效。你想停止第一个,然后开始第二个,但你的代码只会执行其中一个,而不是两个

答案 1 :(得分:0)

你的if条件不是你想要它做的。

此外,您需要跟踪正在播放的最新动画。因此,当您点击案例2(我假定为case 1:)时,您是否可以检查是否需要重启案例2。

以下是一些可能的情况:

  1. 点击案例1 - &gt; (播放动画1) - &gt;点击案例2 - &gt; (停止动画1) - &gt; (播放动画2)
  2. 点击案例2 - &gt; (播放动画2) - &gt;点击案例2 - &gt; (停止动画2)
  3. 如果您在每次点击案例2时都不介意播放动画2,那么您只需要考虑您的if条件。