2014-12-17 2 views
2

저는 새로운 Android API, 특히 새로운 애니메이션을 사용하려고합니다. 두 개의 액티비티가 있고 두 번째 액티비티에 대해 슬라이드 전환으로 setEnterTransition() 및 setExitTransition()을 사용했습니다. 내 안에있는 버튼을 사용하거나 뒤로 버튼을 사용하여 활동을 전환 할 때 모든 것이 잘 작동하지만 두 번째 활동에서 홈 버튼을 누르면 반환 애니메이션이 재생되지 않습니다.Android Lollipop 홈 버튼 반환 애니메이션

두 번째 활동 on create() 메소드 :

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    if (getActionBar() != null) { 
     getActionBar().setDisplayShowHomeEnabled(false); 
     getActionBar().setDisplayHomeAsUpEnabled(true); 
    } 

    Slide slideTransition = new Slide(); 
    slideTransition.setDuration(1000); 
    slideTransition.setSlideEdge(Gravity.RIGHT); 

    getWindow().setEnterTransition(getSlideTransition(Gravity.RIGHT, 1000)); 
    getWindow().setExitTransition(getSlideTransition(Gravity.LEFT, 1000)); 

    getWindow().setAllowEnterTransitionOverlap(true); 

    setContentView(R.layout.activity_second); 

    //... 
} 

첫 번째 활동은 매니페스트의 두 번째 활동의 상위로 설정됩니다.

overridePendingTransition() 메서드를 사용하는 몇 가지 솔루션이 있지만 새로운 메서드를 사용하는 솔루션이 필요합니다 (가능한 경우).

감사합니다.

+0

코드 시도가 표시 될 수 있습니까? – ouflak

+0

안녕하세요 @ 울바라 크, 빠른 답장을 보내 주셔서 감사합니다. 나는 질문을 편집하고 두 번째 활동에서 몇 가지 코드를 삽입했다. –

+0

*하지만 두 번째 활동을하고 홈 버튼을 누르면 리턴 애니메이션이 재생되지 않습니다. * 이것이 의도적으로 설계된 것 같습니다. –

답변

3

이것은 의도적으로 설계된 것입니다. 반환 전환은 활동이 명시 적으로 완료 될 때 (즉, 뒤로 버튼을 누르거나 finishAfterTransition()에 전화 할 때)에만 실행됩니다. 홈 단추를 누르면 응용 프로그램을 백그라운드로 전환하여 나중에 동일한 활동으로 돌아갈 수 있습니다. 홈 단추를 눌렀을 때 활동을 끝내면 나중에 사용자가 응용 프로그램으로 돌아올 때 동일한 활동으로 이동하지 않은 이유에 대해 혼동을 느낄 수 있습니다.

새 Lollipop 전환 API가 이 아니고이 아니고 overridePendingTransition()을 대체한다는 점을 언급 할 필요가 있습니다. 이 둘은 근본적으로 다릅니다. Lollipop 전환 API를 사용하면 한 활동에서 다른 활동으로 전환 할 때 활동의보기 계층 구조 안의 내용을 개별적으로 애니메이션으로 만들 수 있습니다. 반면에 overridePendingTranition()을 사용하면 활동 창이 시스템에 추가되거나 화면에서 제거 될 때 시스템의 기본 창 애니메이션을 대체 할 수 있습니다. 즉, 전자는 활동 창 내부의보기에서 작동하는 반면 전자는 활동 창 전체에서 작동합니다.

마지막 두 가지 주요 차이점은 새로운 Lollipop 전환 API가 동일한 작업에 속한 두 가지 활동 사이에서만 작동한다는 것입니다. 두 개의 다른 작업에 속한 두 활동 사이를 탐색 할 때 이탈/입력 애니메이션을 수행하려면 대신 overridePendingTransition()을 사용해야합니다.