2012-06-01 51 views
11

Trong vài tháng qua, tôi đã xây dựng một động cơ tweening mã nguồn mở trong Java (Universal Tween Engine) để có thể dễ dàng thêm hoạt ảnh mượt mà và chuyển tiếp vào trò chơi Android của tôi. Nó hoạt động như một làn gió cho các trò chơi và được sử dụng thành công bởi nhiều người (chủ yếu là trong cộng đồng LibGDX). Thư viện là chung chung và có thể được sử dụng để tạo hiệu ứng bất cứ điều gì (các thành phần giao diện Swing, các đối tượng trò chơi opengl, vv). Bây giờ, tôi muốn tạo một addon cho lib dành riêng cho UI Android, vì tôi tin rằng nó có thể dễ dàng tạo ra các hình động rất phức tạp so với khung hoạt hình dựng sẵn.Hoạt ảnh trên Android hoạt động như thế nào?

lib của tôi hiển thị phương thức .update(float deltaTime) phải được gọi mỗi khi bạn muốn cập nhật tất cả hoạt ảnh đang chạy. Nó được thiết kế riêng cho các trò chơi vì mọi trò chơi đều cho thấy một vòng lặp vô hạn, nhưng đó không phải là trường hợp cho UI.

Vì vậy, tôi đã tự hỏi làm thế nào khung hoạt ảnh của API Android hoạt động dưới mui xe. Có một chuỗi tĩnh dành riêng cho hoạt ảnh chạy liên tục và cập nhật hoạt ảnh theo từng khung và bị tạm dừng cho đến khi có hoạt ảnh mới chạy không?

Tôi đã suy nghĩ về một cái gì đó như that, nhưng tôi không thực sự hài lòng với mã này vì nó không tính tỷ lệ làm mới thiết bị vào ví dụ.

+1

+1 cho liên kết tốt đẹp, thư viện tuyệt vời. – Orlymee

Trả lời

3

Một nơi tốt để bắt đầu là xem xét cách hệ thống chế độ xem Android triển khai. Niềm vui của nguồn mở.

Khi bạn gọi .animate() trên một chế độ xem, bạn lấy lại một ViewPropertyAnimator, khi startAnimation() bắt đầu một ValueAnimator.

ValueAnimator có Trình xử lý điều khiển vòng lặp.

https://github.com/CyanogenMod/android_frameworks_base/blob/ics/core/java/android/view/ViewPropertyAnimator.java

https://github.com/CyanogenMod/android_frameworks_base/blob/ics/core/java/android/animation/ValueAnimator.java

+1

Cảm ơn các liên kết. Dường như các hoạt ảnh không sử dụng một luồng khác, nhưng chỉ là một trình xử lý chuyên dụng trên hàng đợi thông báo chuỗi hiện tại. Tôi không chắc tôi hiểu chiến lược đằng sau điều này, điều này có thể gây ra sự chậm trễ và gây trở ngại nếu hoạt hình trong khi có tin nhắn đến chủ đề ... –

+0

Bây giờ tôi nhớ, tôi đã đọc một số điều trước đây nói rằng Android đã làm các hoạt ảnh khác nhau hơn iOS. Sau này sử dụng một chuỗi chuyên dụng với mức ưu tiên tối đa. Điều này dẫn đến hình ảnh động rất trơn tru với chi phí xử lý dữ liệu và giao diện người dùng. Tôi không chắc tôi không thích cách iOS ... –

+0

Tôi sẽ cố gắng triển khai chuỗi/hàng đợi chuyên dụng với mức độ ưu tiên tối đa với Tween Engine cho giao diện người dùng Android. Chúng tôi sẽ xem nếu đó là phù hợp hơn cho mắt niềm vui. Điều này thậm chí có thể dẫn đến chứng minh khái niệm cho Google rằng chúng có thể sai. –

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