Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android編程之Fragment使用動畫造成Unknown animation name: objectAnimator異常

Android編程之Fragment使用動畫造成Unknown animation name: objectAnimator異常

編輯:關於Android編程

在為Fragment做切換動畫,啟動後遇到了一個異常:

Caused by: java.lang.RuntimeException: Unknown animation name: objectAnimator

截圖如下:

\


<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+ztK1xLT6wuvI58/Co7o8L3A+CjxwPjwvcD4KPHByZSBjbGFzcz0="brush:java;"> fragment = Fragment.instantiate(getActivity(), clz.getName()); fragment.setArguments(args); ft.setCustomAnimations(R.animator.fragment_rotate_enter, R.animator.fragment_rotate_exit, R.animator.fragment_rotate_pop_enter, R.animator.fragment_rotate_pop_exit); ft.replace(R.id.fragment_stub, fragment); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); ft.addToBackStack(null);

我的動畫文件如下,其他三個大同小異,就不貼出來了 :



    
    


對於這個異常,網上有很多說法,但我看了下解釋,都沒有切中要害。在這裡,我給具體講一下原因:

第一是因為我使用了objectAnimator這個動畫標簽,

第二是因為Fragment我使用的是V4包中的。


原因就在這裡:V4包中的Fragment對於動畫的支持不完全。如果手中有V4源代碼的同學,可以翻出來具體看看——在FragmentManager類中的loadAnimation方法。我這裡就直接貼圖了:

\


標記處的那個位置,就是關鍵代碼。在這裡面才會處理與objectAnimator相關的標簽,如截圖所示:

\

所以,才會造成標題上那個異常。


這裡我再延伸一些內容:那麼V4包中的Fragment支持哪些動畫標簽內呢?看一下V4包中源碼截圖:

源碼中的Fragment,它是沒有注釋掉那段動畫加載代碼的。


小結:
在使用V4包中Fragment時,使用的切換動畫效果,其動畫文件中不能包含objectAnimator,Animator這類標簽。如果必須要使用,請將工程中使用的V4包中Fragment相關類,換成源碼中的Fragment
相關類。


最後,附上那個我要做的動畫效果:一個翻牌的切換效果,是基於APIDemo修改的代碼:

http://download.csdn.net/detail/xyz_fly/7576099


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved