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

來源:互聯網
上載者:User

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

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

如下:


My Code如下:

    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


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.