2011-09-28 33 views
5

tôi cần phải tạo ra một khung hình ảnh động bằng khung nhưng tôi có một số vấn đề Tôi có 30 hình ảnh png mà soạn hoạt hình của tôi, tôi tải AnimationDrawable tôi với mã này:AnimationDrawable vấn đề thời gian khung

 mCurrentAnimation = new AnimationDrawable(); 
     mCurrentAnimation.setOneShot(true); 
     int resId; 
     for (int j = 1; j < 31; j++) 
     {     
      resId = getResources().getIdentifier("resName", "drawable", "com.mindcolorstest.main"); 
      mCurrentAnimation.addFrame(getResources().getDrawable(resId), 1); 
     } 

Và logic " mCurrentAnimation.start() "để bắt đầu Trên thiết bị mdpi hoạt ảnh hoạt động tốt nhưng tôi gặp một số rắc rối với thời lượng của mọi khung hình, trên trình giả lập hdpi hoặc thiết bị tôi có độ trễ và nếu tôi giảm thời lượng của khung (cả trên mdpi hoặc hdpi thiết bị) hoạt ảnh sẽ không hoạt động nhanh hơn, như tồn tại thời lượng tối thiểu cho mỗi khung hình. Một số mẹo và thủ thuật? Tôi không biết mình phải làm gì Q_Q Cảm ơn anyway

+0

Tại sao bạn đang sử dụng vòng lặp tại đây, hình ảnh được tải theo thời gian riêng ... –

+0

vòng lặp chỉ dành cho tải hình ảnh trong đối tượng AnimationDrawable ... mCurrentAnimation.start() sẽ bắt đầu chuyển đổi hình ảnh nền và tạo ra kết quả hoạt hình –

+0

Đó là một cách sai lầm tôi đoán, trên đó widget bạn đang hiển thị các hình ảnh động .... –

Trả lời

0

Tôi đồng ý với điều này, tôi làm nhiều hơn hoặc ít hơn với danh sách hoạt ảnh xml ngay cả trên S4 tôi nhận được thời gian hoạt ảnh lâu hơn trên mỗi khung hình tôi đã thiết lập. (tôi đã đặt thời lượng thành 3ms mỗi khung hình).
tôi đã nhầm lẫn về 16,16ms trên mỗi khung hình là trung bình tối thiểu trên 30 chu kỳ và 85 khung hình.

điều này có thể hoặc không thể trả lời cho dòng scheduleSelf(mAnimationRunnable, now + 1000/60); trong animate() trong DrawableContainer. chỉ cần đoán vì 1000/60 = 16,66 những gì sẽ trở thành 16 là int/long cast ..

nhưng nó cũng có thể đến từ một số hạn chế khác về tốc độ mã hoặc phần cứng.
tôi chưa kiểm tra xem mã trong dòng này có được gọi hay không và đang gây ra điều này vì tôi không thể phá vỡ bằng cách nào đó.
tuy nhiên tôi nghĩ rằng không có màn hình hiển thị nhanh như vậy trong thực tế nên có vẻ thông minh ..

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