2016-05-11 10 views
0

Ich habe nichts fast verwandt gefunden. Wie animiere ich eine Ansicht bevor die onDestroy und onDestroyViewsuper s aufgerufen werden?Animieren Sie eine Ansicht in Fragment vor OnDestroy oder OnDestroyView

Ich habe versucht, mit

@Override 
public void onDestroyView() { 
    Animation fadeOut = AnimationUtils.loadAnimation(getContext(), R.anim.fade_out_fast); 
    mBackgroundView.setAnimation(fadeOut); 
    super.onDestroyView(); 
} 

diese Weise wird die super.onDestroyView sofort die Animation stoppen.

Einstellen eines Zuhörers auf die fadeOut, und dann ruft MyFrag.super.onDestroyView()onAnimationEnd() hat weder nicht, weil die Super muss innerhalb der Methode selbst aufgerufen werden.

Wie gehe ich vor? Danke im Voraus!

+0

Ich denke, dass onDestroyView() für zu spät ist, was Sie versuchen zu erreichen. Hast du mit der onPause() Methode von Fragments versucht? –

+0

Ja, danke .. schon versucht und noch nichts – Matteo

Antwort

2

Ich habe es schließlich erreicht.

Die Arbeit erfolgt über eine Callback-Schnittstelle und die onBackPressed-Schaltfläche aus der Aktivität.

public interface UiCallback { 
    void update(); 
} 

In Aktivität:

UiCallback mUiCallbackInstance = new UiCallback() { 
    public void update(/* Remove the fragment from stack here */) 
} 

@Override 
public void onBackPressed() { 
    mFragmentInstance.remove(mUiCallbackInstance) 
} 

In Fragment:

public void remove(UiCallback callback) { 
    Animation anim = AnimationUtils.loadAnimation(...); 
    anim.setAnimationListener(new Animation.AnimationListener() { 
     @Override 
     public void onAnimationEnd(Animation animation) { 
      callback.update(); 
     } 
    }) 
    // start animation 
} 
Verwandte Themen