2013-09-25 70 views
17

Tôi nhận được lỗi này khi sử dụngjava.lang.RuntimeException: Tên hoạt hình Unknown: objectAnimator

getActivity().getSupportFragmentManager() 
         .beginTransaction() 
         .setCustomAnimations(
           R.animator.card_flip_right_in, R.animator.card_flip_right_out, 
           R.animator.card_flip_left_in, R.animator.card_flip_left_out) 
         .replace(R.id.content_fragment, new DaysSinceBirthSettingFragment()) 
         .addToBackStack(null) 
         .commit(); 

Nhưng khi tôi thay đổi nó để

getActivity().getFragmentManager() 
         .beginTransaction() 
         .setCustomAnimations(
           R.animator.card_flip_right_in, R.animator.card_flip_right_out, 
           R.animator.card_flip_left_in, R.animator.card_flip_left_out) 
         .replace(R.id.content_fragment, new DaysSinceBirthSettingFragment()) 
         .addToBackStack(null) 
         .commit(); 

Nó hoạt động hoàn hảo. nhưng tôi cần hỗ trợ phiên bản cũ hơn, vì vậy tôi phải sử dụng hỗ trợ-v4, trong đó getSupportFragmentManager() xuất phát từ đó.

Tôi đọc một số bài báo nói rằng res/animator không được hỗ trợ bởi sự hỗ trợ-v4, do đó, tôi cũng đã cố gắng để di chuyển các file XML hoạt hình của tôi vào res/anim thư mục và tham chiếu nó bằng cách R.anim.card_flip_right_in

Nhưng nó vẫn không làm việc, bất cứ ai có thể cho tôi biết tôi có thể làm gì?

Trả lời

21

Trình quản lý phân đoạn hỗ trợ không hỗ trợ trình hoạt ảnh (chỉ hoạt ảnh). Thông báo ngoại lệ cho biết rằng bạn có định dạng hoạt ảnh sai trong tài nguyên xml của mình, có thể do bạn đã di chuyển hoạt ảnh tới xml này sai (vì chúng có ký pháp khác). Bạn cần phải viết nó theo cách thích hợp: http://developer.android.com/guide/topics/graphics/view-animation.html

+0

tôi không sử dụng mảnh vỡ hỗ trợ, vẫn là ngoại lệ xảy ra! –

4

nếu bạn đang sử dụng đoạn hỗ trợ thêm bên dưới file xml trong res

Tiếp theo sẽ là nội dung của anim/fragment_slide_left_enter.xml tập tin.

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate 
     android:duration="@android:integer/config_mediumAnimTime" 
     android:fromXDelta="100%p" 
     android:interpolator="@android:interpolator/decelerate_quint" 
     android:toXDelta="0%p" /> 

    <alpha 
     android:duration="@android:integer/config_mediumAnimTime" 
     android:fromAlpha="0.0" 
     android:interpolator="@android:interpolator/decelerate_quint" 
     android:toAlpha="1.0" /> 
</set> 

sau sẽ là nội dung của anim/fragment_slide_left_exit.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate 
     android:duration="@android:integer/config_mediumAnimTime" 
     android:fromXDelta="0%p" 
     android:interpolator="@android:interpolator/decelerate_quint" 
     android:toXDelta="-100%p" /> 

    <alpha 
     android:duration="@android:integer/config_mediumAnimTime" 
     android:fromAlpha="1.0" 
     android:interpolator="@android:interpolator/decelerate_quint" 
     android:toAlpha="0.0" /> 
</set> 

mã sau đây sẽ là nội dung của anim/fragment_slide_right_enter.xml tập tin

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate 
     android:duration="@android:integer/config_mediumAnimTime" 
     android:fromXDelta="-100%p" 
     android:interpolator="@android:interpolator/decelerate_quint" 
     android:toXDelta="0%p" /> 

    <alpha 
     android:duration="@android:integer/config_mediumAnimTime" 
     android:fromAlpha="0.0" 
     android:interpolator="@android:interpolator/decelerate_quint" 
     android:toAlpha="1.0" /> 
</set> 

sau mã sẽ là nội dung của anim/fragme nt_slide_right_exit.xml tập tin

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 

    <translate 
     android:duration="@android:integer/config_mediumAnimTime" 
     android:fromXDelta="0%p" 
     android:interpolator="@android:interpolator/decelerate_quint" 
     android:toXDelta="100%p" /> 

    <alpha 
     android:duration="@android:integer/config_mediumAnimTime" 
     android:fromAlpha="1.0" 
     android:interpolator="@android:interpolator/decelerate_quint" 
     android:toAlpha="0.0" /> 
</set> 

cuối cùng thêm dòng này trong đoạn mã chuyển tiếp của bạn

ft.setCustomAnimations(R.anim.fragment_slide_left_enter, 
         R.anim.fragment_slide_left_exit, 
         R.anim.fragment_slide_right_enter, 
         R.anim.fragment_slide_right_exit)