2011-07-04 32 views
11

Thật dễ dàng để tìm thấy nhiều bài viết thảo luận về việc thực hiện Live Wallpapers cho người mới bắt đầu, giải quyết các câu hỏi chính liên quan đến Bề mặt và vân vân.Các hoạt động trên nền Android Live cho hiệu suất và tiết kiệm pin?

Nhưng còn sự phát triển chuyên nghiệp của Hình nền động thì sao? Phương pháp hay nhất để cấu trúc mã đúng cách, để đảm bảo hiệu suất tốt hiệu suất tốt, tiêu thụ điện năng thấp (để tiết kiệm pin) và phù hợp nhất với các thiết bị khác nhau?

Nếu có thể, một số mẫu mã bao gồm các vấn đề này sẽ rất tuyệt.

Trả lời

13

Công suất tiêu thụ ...
1) Điều quan trọng nhất, cho đến nay, hình nền của bạn sẽ tự tắt khi không hiển thị. Ví dụ khối lập phương xử lý điều này một cách chính xác, loại bỏ các callback runnable trong onDestroy(), onSurfaceDestroyed() và onVisibilityChanged() (khi hiển thị == false).
2) Ngoài ra, yếu tố quyết định lớn nhất của thoát điện sẽ là tốc độ khung hình của bạn. Một hình ảnh động 24 fps sẽ tiêu hao nhiều nước hơn so với một chiếc đồng hồ chỉ cập nhật ở tốc độ 1 khung hình/giây để tạo ra dấu tích tay quét thứ hai. Không có cách nào xung quanh việc này, ngoại trừ việc giáo dục người dùng, để kỳ vọng là hợp lý. Trò chơi hành động sẽ tiêu diệt pin của bạn cho dù đó là ứng dụng hay hình nền động.

Hiệu suất ...
Vẽ lên canvas có lợi ích của sự đơn giản, nhưng đối với hình nền rất phức tạp, bạn sẽ cần sử dụng OpenGL. Có GLWallpaperService và AndEngine. Các hình nền cổ phiếu được gian lận để sử dụng RenderScript (bạn có thể thấy hữu ích khi tìm kiếm mã này trong cây nguồn Android - phức tạp hơn nhiều so với ví dụ khối trong SDK). Và đã có một số cuộc nói chuyện về việc mở rộng libGDX để xử lý hình nền.

Phù hợp nhất ...
Vâng, cũng giống như phần còn lại của Android: bạn cần thiết kế tác phẩm nghệ thuật của mình theo tỷ lệ co giãn, truy vấn thiết bị và điều chỉnh cho phù hợp. Đối với một hình nền đơn giản, nó thường đủ để mở rộng tác phẩm nghệ thuật của bạn trong onSurfaceChanged(), nơi bạn được cung cấp chiều rộng và chiều cao làm thông số. Trong một số trường hợp, bạn có thể muốn kiểm tra toàn bộ DisplayMetrics.

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