Khi bạn có một khung hiển thị được thiết kế hợp lý, phản hồi các cử chỉ và chuyển đổi giữa các trạng thái, hãy đảm bảo khung hiển thị chạy nhanh. Để tránh giao diện người dùng có cảm giác chậm hoặc bị giật trong quá trình phát, hãy đảm bảo các ảnh động luôn chạy ở tốc độ 60 khung hình/giây.
Tăng tốc độ xem
Để tăng tốc độ hiển thị, hãy loại bỏ mã không cần thiết khỏi các quy trình thường xuyên được gọi. Hãy bắt đầu với onDraw(), vì đây là vấn đề mang lại lợi ích lớn nhất cho bạn. Cụ thể, hãy loại bỏ các hoạt động phân bổ trong onDraw(), vì các hoạt động phân bổ có thể dẫn đến việc thu gom rác gây ra hiện tượng giật. Phân bổ các đối tượng trong quá trình khởi tạo hoặc giữa các ảnh động. Đừng bao giờ phân bổ trong khi ảnh động đang chạy.
Ngoài việc làm cho onDraw() gọn gàng hơn, hãy đảm bảo rằng bạn gọi lệnh này ít thường xuyên nhất có thể. Hầu hết các lệnh gọi đến onDraw() đều là kết quả của lệnh gọi đến invalidate(), vì vậy, hãy loại bỏ các lệnh gọi không cần thiết đến invalidate().
Một thao tác khác rất tốn kém là duyệt qua bố cục. Khi một thành phần hiển thị gọi requestLayout(), hệ thống giao diện người dùng Android sẽ truyền tải toàn bộ hệ phân cấp view để tìm ra kích thước cần thiết của mỗi thành phần hiển thị. Nếu tìm thấy các phép đo xung đột, thì nó có thể đi qua hệ phân cấp nhiều lần. Đôi khi, nhà thiết kế giao diện người dùng tạo ra hệ phân cấp sâu của các đối tượng ViewGroup được lồng. Những hệ phân cấp chế độ xem sâu này gây ra các vấn đề về hiệu suất, vì vậy, hãy tạo hệ phân cấp chế độ xem nông nhất có thể.
Nếu giao diện người dùng của bạn phức tạp, hãy cân nhắc viết một ViewGroup tuỳ chỉnh để thực hiện bố cục của giao diện người dùng đó.
Không giống như các khung hiển thị tích hợp, khung hiển thị tuỳ chỉnh có thể đưa ra các giả định dành riêng cho ứng dụng về kích thước và hình dạng của các thành phần con. Do đó, khung hiển thị này không cần phải đi qua các thành phần con để tính toán các phép đo.
Ví dụ: nếu bạn có một ViewGroup tuỳ chỉnh không điều chỉnh kích thước của chính nó để phù hợp với tất cả các khung hiển thị con, thì bạn sẽ tránh được chi phí đo lường tất cả các khung hiển thị con. Bạn không thể tối ưu hoá theo cách này nếu sử dụng các bố cục tích hợp phù hợp với nhiều trường hợp sử dụng.