14
여기

상황입니다 애니메이션을 사용하여 백 스택에 추가하고 백 스택을 팝핑합니다 (ChildFragmentB로 이동할 때 애니메이션이 있고, 뒤로 누르고 ChildFragmentA로 이동하면 애니메이션이 있습니다).안드로이드 조각 애니메이션 onResume

지금은 ActivityA->FragmentB으로 이동합니다 (조각 A는 붙어 있지 않습니다). ActivityA->FragmentA으로 돌아 가면 ChildFragmentB이 표시되며 은 ChildFragmentA에서와 마찬가지로 생생합니다.

을 다시 시작할 때이 애니메이션을 비활성화하고 싶습니다. 그러나 어린이 조각 사이를 전환 할 때 보관하십시오. 이 애니메이션은 FragmentTransaction에서 설정됩니다. 이것이 일어날 수있는 방법이 있습니까? 이 때

+1

당신이 어떤 활동이나 조각이에서 오는하고 그에 따라하여 FragmentTransaction을 설정하는 값을 유지 봤어 : res/anim/hold.xml

private boolean mDisableAnimations; void disableAnimations() { mDisableAnimations = true; } void enableAnimations() { mDisableAnimations = false; } @Override public Animation onCreateAnimation(int transit, boolean enter, int nextAnim) { if (mDisableAnimations) { return AnimationUtils.loadAnimation(getActivity(), R.anim.hold); } return super.onCreateAnimation(transit, enter, nextAnim); } 

정적 애니메이션에 정의되어있다? 전환 할 때가 아니라면'ft.setCustomAnimations (FragmentTransaction.TRANSIT_NONE, FragmentTransaction.TRANSIT_NONE); '과 같습니다. FragmentTransaction을 지정하는 위치가 확실치 않아서 이것이 작동하는지 잘 모릅니다. – SvenT23

답변

0

시도는

I 상위 단편 일부 로직을 추가함으로써이 문제를 해결
3

감지하도록 둘 FragmentA의 ChildFragments 및 B 다시 onResume을 ActivityA-> FragmentA 중의 천이 onAttach 비활성화 및 재 활성화를 할 숨겨 지거나 표시되며, 명시 적으로 해당 자식의 애니메이션을 비활성화하거나 활성화 할 수 있습니다.

@Override 
public void onPause() { 
    super.onPause(); 
    // If this fragment is being closed/replaced then disable animations 
    // in child fragments. Otherwise we get very nasty visual effects 
    // with the parent and child animations running simultaneously 
    ChildFragment f = (ChildFragment) getChildFragmentManager() 
             .findFragmentByTag(FRAGMENT_CHILD); 
    if (f != null) { 
     f.disableAnimations(); 
    } 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    // if this fragment is being opened then re-enable animations 
    // in child fragments 
    ChildFragment f = (ChildFragment) getChildFragmentManager() 
             .findFragmentByTag(FRAGMENT_CHILD); 
    if (f != null) { 
     f.enableAnimations(); 
    } 
} 

하위 조각에서 애니메이션을 사용하거나 사용하지 않도록 설정하는 방법을 구현해야합니다. onCreateAnimation()을 무시하고 애니메이션을 비활성화해야하는 경우 정적 애니메이션 (R.anim.hold)을 사용하여이 작업을 수행합니다.

<?xml version="1.0" encoding="utf-8"?> 
<translate 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromXDelta="0" 
    android:toXDelta="0" 
    android:duration="2000" /> 
관련 문제