2016-07-08 5 views
0

Ich möchte auf ein Bild klicken, es um 180 Grad drehen und die Bildressource ändern. Es scheint jedoch nicht zu funktionieren.Hinzufügen einer Verzögerung zu einem festgelegten Bild nach der Animation

public class MainActivity extends AppCompatActivity { 

GridLayout gridView; 
boolean isGrey = true; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    gridView = (GridLayout) findViewById(R.id.grid); 

} 

public void flip(final View view){ 

    ImageView tile = (ImageView) view; 
    if(isGrey) { 
     tile.animate().rotationXBy(180f).setDuration(700); 
     tile.setImageResource(R.drawable.green); 
     isGrey = false; 
    }else{ 
     tile.animate().rotationXBy(-180f).setDuration(700); 
     tile.setImageResource(R.drawable.grey); 
     isGrey = true; 
    } 
    Log.i("Tag", tile.getTag().toString()); 

} 
} 

Alles, was ich tun möchte, ist die setImageResource nach der Animation ändern und nicht sofort.

Antwort

1

Sie können die Methode withEndAction (Runnable r) von ViewPropertyAnimator verwenden. Ihr Code sollte dann in etwa so aussehen:

public class MainActivity extends AppCompatActivity { 

GridLayout gridView; 
boolean isGrey = true; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 

gridView = (GridLayout) findViewById(R.id.grid); 

} 

public void flip(final View view){ 

final ImageView tile = (ImageView) view; 
if(isGrey) { 
    tile.animate().rotationXBy(180f).setDuration(700).withEndAction(new Runnable() { 
     @Override 
     public void run() { 
    tile.setImageResource(R.drawable.green); 
    isGrey = false; 
     } 
    }); 
}else{ 
    tile.animate().rotationXBy(-180f).setDuration(700).withEndAction(new Runnable() { 
     @Override 
     public void run() { 
      tile.setImageResource(R.drawable.grey); 
      isGrey = true; 
     } 
    }); 
} 
Log.i("Tag", tile.getTag().toString()); 

} 
}