我想在单击另一个图像后停止抖动动画



我想一个接一个地播放动画,当我点击任何新图像时,上一个图像也会抖动,我想立即停止上一个图片的动画点击任何新图片。

public class MainActivity extends AppCompatActivity {
ImageView dog, lion, cat, cow, elephant, horse, nextB, backB, settingB;
MediaPlayer mediaPlayer;
Animation animShake;
// Firebase analyticals
private FirebaseAnalytics mFirebaseAnalytics;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Action bar hide
Objects.requireNonNull(getSupportActionBar()).hide();
// Obtain the FirebaseAnalytics instance.
mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
// find ids of items
findId();
// on click
onClick();
// Animation of shake of items when click
animShake = AnimationUtils.loadAnimation(this, R.anim.shake);

}

private void onClick() {
// lion click
lion.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// check the condition is any audio is playing already
check();
lion.startAnimation(animShake);
mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.lion);
mediaPlayer.start();
}
});
// cow click
cow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// check the condition is any audio is playing already
check();
cow.startAnimation(animShake);
mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.cow);
mediaPlayer.start();
}
});
// cat click
cat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// check the condition is any audio is playing already
check();
cat.startAnimation(animShake);
mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.cat);
mediaPlayer.start();
}
});
// dog click
dog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// check the condition is any audio is playing already
check();
dog.startAnimation(animShake);
mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.dog);
mediaPlayer.start();
}
});
// elephant click
elephant.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// check the condition is any audio is playing already
check();
elephant.startAnimation(animShake);
mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.elephant);
mediaPlayer.start();
}
});
// horse click
horse.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// check the condition is any audio is playing already
check();
horse.startAnimation(animShake);
mediaPlayer = MediaPlayer.create(MainActivity.this, R.raw.horse);
mediaPlayer.start();
}
});

settingB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, SettingActivity.class);
startActivity(intent);
}
});

}

// check is audio is playing already
public void check() {
if (mediaPlayer != null && mediaPlayer.isPlaying()) {
mediaPlayer.reset();
}
}

// find all ids here
private void findId() {
dog = findViewById(R.id.dogImg);
cat = findViewById(R.id.catImg);
cow = findViewById(R.id.cowImg);
lion = findViewById(R.id.lionImg);
elephant = findViewById(R.id.elephantImg);
horse = findViewById(R.id.horseImg);
nextB = findViewById(R.id.next_btn);
nextB.setVisibility(View.INVISIBLE);
backB = findViewById(R.id.back_btn);
backB.setVisibility(View.GONE);
settingB = findViewById(R.id.setting);
}

当我点击任何新的图像时,上一个图像也会抖动,我如何停止它并一次抖动一个图像。我尝试了很多方法,但我找不到解决方案,任何人都能帮我吗?

创建一个保持最后一个图像被点击的变量,创建一个metohd onClick,它在输入中获取图像以对其进行动画化,检查最后一个是否与实际不同,如果是,则停止使用lastClicked图像的动画,并在新的图像上启动动画,类似于:

ImageView lastImageClicked = null
lion.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// check the condition is any audio is playing already
check();
animateImage(lion)
}
});

.
.
.
.
.
private void animateImage(ImageView actualImage){
if(lastClicked != null && actualImage == lastClicked)
//block animation on lastclicked using his id
.
.
.
//startAnimation on the other image using actualImage id
//set the lastClicked Image to actual
lastClicked = actualImage

}

最新更新