UFO ET IT

단편 애니메이션 및 백 스택

ufoet 2021. 1. 15. 07:42
반응형

단편 애니메이션 및 백 스택


백 스택에서 FragmentTransactions를 팝하는 방법이 사용자 지정 애니메이션을 처리하는 방법을 사용하거나 이해하는 데 문제가 있습니다. 특히 "out"애니메이션을 호출 할 것으로 예상하지만 그렇지 않은 것 같습니다.

프래그먼트 트랜잭션 (FragmentTransaction)을 처리하는 간단한 방법이 있습니다. 여기서 프래그먼트를 추가하고 사용자 지정 전환을 적용하여 페이드 인 / 페이드 아웃합니다. 나는 또한 이것을 백 스택에 추가하여 사용자가 뒤로 버튼을 사용하여 해당 트랜잭션을 취소 할 수 있도록 기본적으로 조각이 추가되기 전의 상태로 이동합니다.

protected void changeFragment() { 
    FragmentTransaction ft = fm.beginTransaction(); 
    ft.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out); 
    ft.add(R.id.fragment_container, new TestFragment()); 
    ft.addToBackStack(null); 
    ft.commit(); 
} 

모든 것이 앞으로 잘 작동하지만 사용자가 뒤로 버튼을 클릭하면 전환 애니메이션이 반전되지 않습니다. 내가 예상했던 것은 조각이 제거되면 페이드 아웃 애니메이션을 사용한다는 것입니다. 대신 (애니메이션없이) 튀어 나와 컨테이너가 페이드 인하는 것처럼 보입니다. 이것이 정확히 무슨 일이 일어나고 있는지 확실하지 않지만 조각이 확실히 페이드 아웃되지는 ​​않습니다.

내 애플리케이션은 호환성 라이브러리를 사용하여 조각 지원을 추가하지만 Honeycomb (android-11)에도 적용 할 수 있다고 가정합니다. 내가 여기서 뭔가 잘못하고 있는지 또는 너무 많은 것을 기대하고 있는지 아는 사람이 있습니까? 이상적으로는 메시지를 클릭하여 앞으로 이동 한 다음 뒤로 버튼을 사용하여 뒤로 이동하는 것과 관련하여 Gmail (Xoom에서)이 수행하는 방식과 유사하게 조각을 애니메이션하고 싶습니다. 뒤로 버튼 기능을 재정의 할 필요가없고 내 프래그먼트 상태를 따라갈 필요가 없습니다. 내가 뒤로 물러나고 싶은 몇 가지 "트랜잭션"을 가질 수 있고 휠을 재창조하는 팬이 아니기 때문입니다.

Android 개발자 그룹에서도 질문했습니다. http://groups.google.com/group/android-developers/browse_thread/thread/1136a3a70fa0b6e9


이 버그는 3.2 릴리스에서 다음과 같은 새 API를 추가하여 수정되었습니다.

http://developer.android.com/reference/android/app/FragmentTransaction.html#setCustomAnimations(int, int, int, int)

버그 보고서에서 언급했듯이 아직 호환성 라이브러리로 백 포트되지 않았습니다.


나는 이것을 사용한다 :

ft.setCustomAnimations(R.anim.slide_in, R.anim.hyperspace_out, R.anim.hyperspace_in, R.anim.slide_out);

뒤로 버튼을 누르면 전환이 반대로 작동합니다.


버그 입니다. 버그 보고서 15623을 보세요 . Android 프로젝트 참여자 중 한 명이 릴리스 3.1에 대해서는 수정이 너무 늦었지만 다음 릴리스에 포함될 것이라고 말했습니다.

같은 멤버가 계속해서 ...

문제는 조각을 현재 위치에 놓기 위해 실행 된 것과 동일한 애니메이션이 팝 작업에서 실행된다는 것입니다. 예를 들어, 위의 슬라이딩 예제에서 앞으로 작업 (이전 조각을 스택으로 푸시하고 새 조각을보기로 이동)에서 이전 조각을 중앙에서 왼쪽으로 밀어 내고 새 조각을 중앙에. 스택이 튀어 나오면 이와 동일한 애니메이션이 실행됩니다. 가장 최근 조각은 오른쪽에서 가운데로 밀어 넣어 '아웃'됩니다 (그 후에는 제거되므로 사라집니다). 오래된 조각이 스택에서 튀어 나와 화면 중앙에서 왼쪽으로 애니메이션됩니다.

참조 URL : https://stackoverflow.com/questions/5327636/animating-fragments-and-the-back-stack

반응형