2013-07-20 35 views
61

Tôi đang cố gắng tạo hoạt ảnh tùy chỉnh để hoạt động với phân đoạn của mình.Hoạt ảnh tùy chỉnh FragmentTransaction của Android (Tên hoạt ảnh không xác định: Dịch)

Tôi đã theo các hướng dẫn trực tuyến nhưng tôi đã nhận được báo lỗi dưới đây:

java.lang.RuntimeException: Tên phim hoạt hình Unknown: dịch

XML cho các hình ảnh động là dưới đây:

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

Các tập tin Java được hiển thị dưới đây:

public void goCategory(View v) {   
    FragmentTransaction ft = fm.beginTransaction();  
    ft.setCustomAnimations(R.animator.anim_in_left, R.animator.anim_out_left);    
    ft.show(fragment); 
    ft.commit(); 
} 

Tôi đang gặp sự cố khi hiểu các giải pháp trong các chủ đề khác. Nếu ai đó có thể câm nó xuống cho tôi, tôi thực sự đánh giá cao nó.

Cảm ơn

+0

Nếu bạn đang sử dụng hoạt ảnh với phiên bản Thư viện hỗ trợ của Fragment, thì đó có thể là vấn đề của bạn. –

Trả lời

92

Nó sẽ không làm việc, bạn nên sử dụng đối tượng làm phim hoạt hình

phim hoạt hình/slide_in_left.xml

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

    <objectAnimator 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:duration="500" 
     android:propertyName="x" 
     android:valueFrom="1000" 
     android:valueTo="0" 
     android:valueType="floatType" /> 

</set> 

phim hoạt hình/slide_out_right.xml

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

    <objectAnimator 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:duration="500" 
     android:propertyName="x" 
     android:valueFrom="0" 
     android:valueTo="-1000" 
     android:valueType="floatType" /> 

</set> 

Lớp mục con

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      // TODO Auto-generated method stub 
      // return super.onCreateView(inflater, container, savedInstanceState); 

      View view = (ViewGroup) inflater.inflate(R.layout.product_frame, null); 
      getFragmentManager().beginTransaction() 
        .replace(R.id.sub_header, new Sub_Header()).commit(); 
      getFragmentManager() 
        .beginTransaction() 
        .setCustomAnimations(R.animator.slide_in_left, 
          R.animator.slide_out_right, 0, 0) 
        .replace(R.id.product_frame, new Sub_Catagory_Grid()).commit(); 

      view.getWidth(); 
      return view; 

     } 
+7

Tại sao nó không hoạt động? bạn co thể giải thich không ? –

+0

vấn đề gì đăng nó ở đây tôi không hiểu câu hỏi của bạn u có nghĩa là gì bởi công việc của mình? –

+2

Anh ấy đang nói đến tuyên bố của bạn rằng giải pháp của OP sẽ không hoạt động và yêu cầu làm rõ. – Tom

106

Có thể bạn đang trộn hai apis. Có hai trường hợp:

  • Nếu nhắm mục tiêu dưới 3,0 hay sử dụng mảnh vỡ hỗ trợ v4: Bạn phải sử dụng các hình ảnh động api cũ, có nghĩa là, một trong những bạn đang sử dụng (họ đi vào anim /, và R.anim.thing)

  • Nếu bạn đang nhắm mục tiêu trên 3,0 sử dụng mảnh vỡ có nguồn gốc: bạn phải sử dụng apis hoạt hình mới, có nghĩa là, ObjectAnimators (họ đi vào phim hoạt hình/và R.animator.thing).

+1

Bạn có thể biết nơi nào trong tài liệu hướng dẫn nó nói rằng bạn phải sử dụng đối tượng hoạt hình cho các mảnh gốc? – kmdupr33

+0

Tôi đã kiểm tra mã nguồn của cả Api và thấy rằng tất cả hình ảnh động xml sẽ đi vào thư mục res/anim, không thấy bất kỳ phân tích cú pháp nào cho hoạt ảnh / –

0

Khi @minivac trả lời bạn đang trộn hai API. Vui lòng xem Display Card Flip Animations ví dụ từ hướng dẫn đào tạo Android để hiểu thêm về cách thêm hoạt ảnh tùy chỉnh vào giao dịch phân đoạn. Nó giải quyết chính xác vấn đề của bạn.

Các vấn đề liên quan