Tôi muốn thực hiện một hiệu ứng gợn thực tế trong Android quá, như vậy sẽ chia sẻ kinh nghiệm của tôi:
Là một thực hiện tham khảo tôi mất cổng Chikuyonok Javascript Sergey của Neil Wallis Java algo. Đây là một sân chơi nơi bạn có thể thử nghiệm với mã JS gốc: http://jsfiddle.net/esteewhy/5Ht3b/6/
Lúc đầu, tôi đã chuyển mã JS sang Java chỉ để nhận ra rằng không có cách nào để ép hơn 1 fps trên phần cứng Huawei U8100 của tôi. (Có một số nỗ lực tương tự trên mạng với kết luận duy nhất: họ đang ridiculously chậm).
BTW, câu trả lời SO này khá hữu ích để hiểu cơ bản về cách mã đồ họa tương tác trong Android: https://stackoverflow.com/a/4946893/35438. Tôi đã mượn bộ đếm fps từ đó.
Sau đó, tôi quyết định dùng thử NDK của Android để thực hiện lại bản ngã gốc trong C thuần túy (lần đầu tiên tôi gặp nó trong 10+ năm!). Mặc dù các tài liệu của NDK hơi khó hiểu (đặc biệt là yêu cầu và điều kiện tiên quyết), tất cả đều hoạt động như một nét duyên dáng, vì vậy tôi có thể đạt tới 30 khung hình/giây - nó có thể không quá ấn tượng, nhưng vẫn là một cải tiến triệt để trên mã Java .
Cuối cùng, tôi đã đặt tất cả công việc của mình trực tuyến: https://github.com/esteewhy/whater, vì vậy vui lòng chơi với điều đó.Nó có chứa:
- Mã bouncing bóng nảy tương tự được đề cập ở trên (chỉ để tham khảo).
- Gợn sóng nước Cổng Java (chậm như địa ngục!)
- Gợn sóng nước C triển khai (cần NDK để biên dịch và JDK để tạo tệp .h).
(Dự án này là không "sạch", nghĩa là: tất cả các mã nhị phân là ở đó, như vậy có thể cố gắng chạy nó "như là" ngay cả khi không NDK.)
Một trong những built- trong hình nền động trong Android là gợn sóng nước, vì vậy nó chắc chắn có thể. – Wyzard