Ich mache eine Anwendung auf Android, die eines der beiden verfügbaren Bilder beim Klicken auf eine Schaltfläche erzeugt und nach einer Dauer von 1 Sekunde soll das Bild verschwinden, was dem Benutzer die Wahlmöglichkeit gibt Klicken Sie erneut auf die Schaltfläche.Animation löst nur das erste Mal aus
Das Problem ist, dass die Animation reibungslos auf den ersten Tastendruck funktioniert (d. H. Ein Bild erzeugt und dann verschwindet), aber auf der zweiten Taste drücken, das Bild sitzt nur da und nichts passiert. Ich kann nicht herausfinden warum.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ImageView firstimage = (ImageView)findViewById(R.id.imageView2);
final ImageView secondimage = (ImageView)findViewById(R.id.imageView1);
final Button clickMe = (Button)findViewById(R.id.button);
final TextView image_description = (TextView)findViewById(R.id.textView);
image_description.setText("");
final Animation fadeout = new AlphaAnimation(1,0);
fadeout.setStartOffset(1000);
fadeout.setDuration(1000);
secondimage.setAnimation(fadeout);
firstimage.setAnimation(fadeout);
image_description.setAnimation(fadeout);
secondimage.setVisibility(View.GONE);
firstimage.setVisibility(View.GONE);
image_description.setVisibility(View.GONE);
clickMe.setVisibility(View.VISIBLE);
fadeout.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) { }
@Override
public void onAnimationEnd(Animation animation) {
System.out.println("Animation block");
secondimage.setVisibility(View.GONE);
firstimage.setVisibility(View.GONE);
image_description.setVisibility(View.GONE);
clickMe.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationRepeat(Animation animation) { }
});
clickMe.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
System.out.println("Click block");
Random r = new Random();
int i = r.nextInt(2);
clickMe.setVisibility(View.GONE);
if(i == 0) {
secondimage.setVisibility(View.VISIBLE);
image_description.setText("LOOK it's a CAT");
image_description.setVisibility(View.VISIBLE);
secondimage.setAnimation(fadeout);
image_description.setAnimation(fadeout);
} else {
firstimage.setVisibility(View.VISIBLE);
image_description.setText("LOOK it's a DOG");
image_description.setVisibility(View.VISIBLE);
firstimage.setAnimation(fadeout);
image_description.setAnimation(fadeout);
}
}
});
}
Die Logs in etwa so aussehen:
Click Block
Animation Block
Click Block
Click Block
Click Block
Click Block
Jede Idee, warum der Code nicht mit dem Animationsblock weiter auf den 2. Klick erreicht?
Nicht 100% sicher, aber ich denke, Sie müssen Ihren Animationszustand löschen, indem Sie '.clearAnimation()' in Ihren Ansichten aufrufen, wenn Sie mit der Animation fertig sind oder bevor Sie wieder animieren. – ChrisStillwell
Versucht, es hat nicht funktioniert. – Piyush