Tạo splash screen đúng cách

Chính ý tưởng splash screen khiến cho tôi tức giận một chút. Chính nó làm tôi phải quy lụy.

Splash screens chỉ làm lãng phí thời gian của bạn, đúng không? Là một lập trình viên Android, khi thấy một splash screen, tôi biết rằng một vài lập trình viên thiếu kiến thức phải thêm một khoảng trễ 3 giây vào mã.

Rồi thì, tôi phải nhìn chăm chăm vào vài hình ảnh trong 3 giây cho đến khi tôi dùng được ứng dụng. Và tôi phải làm việc này mỗi lần ứng dụng khởi chạy. Tôi biết ứng dụng nào tôi mở. Tôi biết những gì nó làm. Chỉ là cho phép tôi sử dụng nó!

Những gì Google đề xuất
Có thể bạn ngạc nhiên khi nghe rằng Google ủng hộ bạn dùng splash screen. Điều này đúng ở đây trong thiết kế cần thiết.

Điều này không phải lúc nào cũng đúng; Google đã từng ủng hộ phản bác splash screens, và thậm chí gọi nó là một anti-pattern.

Cho những gì?

Tạo splash screen đúng cách
Tôi tin rằng Google không tự phủ nhận; lời khuyên cũ và chỗ đứng mới cùng nhau. (Nói rằng, nó vẫn không là ý tưởng hay để dùng splash screen làm hao phí thời gian của người dùng. Đừng làm điều đó.)

Tuy nhiên, các ứng dụng Android cần thời gian để khởi động, đặc biệt là một khởi đầu nhạt nhẽo. Có một khoảng trì hoãn khi đó mà bạn không thể tránh được. Thay vì để một màn hình trống trơn trong suốt thời gian này, tại sao ta không cho người dùng thấy một thứ gì đó đẹp? Điều này gần như được Google ủng hộ. Đừng làm phí thời gian của người dùng, nhưng cũng không nên để trống chúng, cũng như không thiết lập phần ứng dụng cho lần chạy đầu tiên.

Nếu bạn xem những bản cập nhật ứng dụng gần đây của Google, bạn sẽ thấy rằng cần thiết dùng splash screen. Hãy xem ứng dụng YouTube chẳng hạn.

Lượng thời gian bạn bỏ ra để nhìn splash screen này chính xác là lượng thời gian ứng dụng tự định hình. Đây cũng là một sự khởi đầu nhạt nhẽo, đồng nghĩa đây là một khởi đầu chậm nhất có thể. Nếu ứng dụng là bộ nhớ truy cập nhanh, splash screen sẽ biến mất gần như ngay lập tức.

Bổ sung một Splash Screen
Bổ sung splash screen đúng cách có một chút khác biệt hơn bạn tưởng tượng. Hiển thị splash mà bạn thấy phải được sẵn sàng ngay lập tức, thậm chí trước khi bạn làm hiện một tập tin layout trong splash activity.

Vì vậy bạn không dùng một tập tin layout. Thay vào đó, chỉ định hình nền splash screen như hình nền theme của activity. Để làm điều này, đầu tiên tạo một XML drawable trong res/drawable.

Lưu ý: Tất cả mã bên dưới có sẵn trên GitHub.

Ở đây, tôi đã tạo một màu nền và một hình ảnh.

Tiếp đó, bạn sẽ thiết lập nó như một nền của splash activity trong theme. Tìm trong tập tin styles.xml của bạn và thêm một theme mới cho splash activity của bạn:

Trong SplashTheme mới, thiết lập thuộc tính nền cửa sổ cho XML drawable. Cấu hình nó như theme của splash activity trong AndroidManifest.xml:

Cuối cùng, class SplashActivity của bạn chỉ trỏ về main activity:

Để ý rằng bạn sẽ thậm chí không thiết lập một view cho SplashActivity này. View sẽ hiển thị từ theme. Khi bạn thiết lập UI cho splash activity của bạn trong theme, nó có sãn lập tức.

Nếu bạn không có một tập tin layout cho splash activity, tập tin layout đó sẽ chỉ hiện cho người dùng sau khi ứng dụng khởi tạo hoàn toàn, mà quá trễ. Bạn muốn splash được hiển thị chỉ với lượng thời gian đó trước khi ứng dụng được khởi tạo.

Làm đúng
Với những bước đã hoàn thành, bạn sẽ có một splash screen đúng cách ngay lập tức:

Nắm được kiến thức này, hãy tạo splash screen của bạn làm việc đúng cách. Đừng lãng phí thời gian của người dùng, nhưng nên cho họ gì đó hay đẹp trong lúc chờ đợi.

[Dịch bởi: Lê Hồng Sơn]
Nguồn: Chris Stewart (Big Nerd Ranch)

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *