2013-07-05 2 views
3

По просьбе клиента я пытаюсь подражать «iOS UINavigationController-style» справа налево, слева-справа поп-анимацию с использованием Android FragmentManager/FragmentTransaction и метод setCustomAnimations() для достижения анимации перехода.Фрагмент onDestroyView() вызывается до завершения анимации

Все работает хорошо, за исключением случаев, когда выкладывает фрагмент из заднего стека - onDestroyView() вызывается сразу же на выпадающем фрагменте, а дочерние представления фрагмента немедленно удаляются из макета.

Это означает, что перед тем, как предыдущий фрагмент завершает анимацию, появляется вспышка черного цвета (цвет фона всплывшего фрагмента), который является довольно уродливым.

Любые идеи о том, как я могу заставить всплывший фрагмент сохранить свою иерархию представлений до завершения анимации перехода?

ответ

0

У меня такая же проблема.

Я обнаружил, что ondestoryview() вызывается при запуске анимации и вызывается ondestory() при завершении.

Поэтому я переместил код из ondestoryview() в ondestory().

Другим решение: добавить этот код в onDestoryView():

View v = getView(); 
Bitmap b = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.RGB_565); 
Canvas c = new Canvas(b); 
v.layout(0, 0, v.getWidth(), v.getHeight()); 
v.draw(c); 
BitmapDrawable bd = new BitmapDrawable(ProviderFactory.getContext().getResources(), b); 
int sdk = android.os.Build.VERSION.SDK_INT; 
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) { 
    getActivity().findViewById(R.id.fragment_container).setBackgroundDrawable(bd); 
} else { 
    getActivity().findViewById(R.id.fragment_container).setBackground(bd); 
} 
Смежные вопросы