我在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>
答案 0 :(得分:0)
您的代码无效。你想停止第一个,然后开始第二个,但你的代码只会执行其中一个,而不是两个
答案 1 :(得分:0)
你的if条件不是你想要它做的。
此外,您需要跟踪正在播放的最新动画。因此,当您点击案例2(我假定为case 1:
)时,您是否可以检查是否需要重启案例2。
以下是一些可能的情况:
如果您在每次点击案例2时都不介意播放动画2,那么您只需要考虑您的if条件。