Splash Screen

by phongpn3
573 views

Hôm nay mình quay lại với chủ đề khá quen thuộc liên quan đến Splash Screen. Như chúng ta đã biết splash screen (màn hình khởi động ứng dụng) là trải nghiệm và là thứ đầu tiên người dùng nhìn thấy đối với mỗi ứng dụng.

Những chức năng cụ thể của nó là show lên hình ảnh của App, một kiểu nhận dạng của App đó. Nhưng có thể sâu xa hơn của việc tạo ra màn hình này là thực hiện một số việc trước khi vào giao diện chính của ứng dụng, có thể liệt kể ở đâu là lấy và đồng bộ dữ liệu ở đâu đó (có thể là server, database, … ), chuẩn bị data hiển thị ở màn hình chính, …

Bài viết dưới đây mình xin giới thiệu qua một số cách tiếp cận và triển khai khi thực hiện việc implement một Splash screen. Và một số ưu, nhược điểm của nó. Mình có thể liệt kê 3 cách chính mà thông thường mình thấy trong thời điểm hiện tại.

1. Tạo một Activity và 1 layout XML tương ứng của nó

Cách này theo mình thấy là cách phổ biến nhất mà các app trước khi có Android 12 đang sử dụng. Thực hiện cách này, lập trình viên chỉ cần tạo một giao diện XML theo đúng Splash UI theo requirement và setContentView cho nó. Khi muốn kết thúc, chúng ta chỉ cần start Activity chính tương bằng Intent và nhớ finish() Splash Screen hiện tại

2. Tạo một Activity và set them background cho chúng

Nếu thật sự các bạn thực hiện giống ở cách một, nhiều khả năng các bạn sẽ gặp phải trường hợp khi bập bật màn hình nên bạn thường thấy màn hình trắng một lát trước khi ảnh được hiện lên là do layout của bạn chỉ được hiển thị sau khi ứng dụng đã khởi tạo xong. Vì vậy để tránh việc này thay vì bạn tạo một layout cho màn hình này thì bạn sẽ tạo theme cho riêng Splash Activity này. Background mà bạn thiết lập giống như layout của Splash Screen mà bạn muốn triển khai.

Các bước thực hiện

Để có thể làm splash screen bằng theme, đầu tiên bạn cần tạo một XML drawable splash_background.xml bên trong thư mục res/drawable

image

Bước tiếp theo ta set splash_background.xml cho hình nền của theme. Ta thêm SplashTheme cho splash activity như sau:

image

Sau đó ta cấu hình SplashTheme cho Activity Splash screen trong AndroidManifest.xml

image

Bước cuối cùng ta tạo một activity SplashActivity.java mà không cần setContentView cho nó

image

Bằng cách làm trên View sẽ hiển thị từ theme mà không cần khỏi tạo layout nên ứng dụng sẽ chạy nhanh hơn, và thỉnh thoảng sẽ không bị xuất hiện hiện tượng màn hình trắng. Đây là một cách hợp lý mà các bạn có thể cân nhắc nếu vẫn muốn khởi tạo một Activity riêng biệt cho Splash Screen.

3. Sử dụng API Splash Screen Android 12

Như tên gọi của nó, từ Android 12 ra mắt một cách triển khai để tạo ra Splash Screen mới. Trải nghiệm mới mang đến các yếu tố thiết kế tiêu chuẩn cho mọi lần khởi chạy ứng dụng, nhưng nó cũng có thể tùy chỉnh để ứng dụng của bạn có thể duy trì thương hiệu riêng của ứng dụng.

Vậy Splash Screen hoạt động thế nào Khi một app khởi chạy thì có thể rơi vào 1 trong các giai đoạn sau:

  • Cold Start (app chạy lần đầu). Ví dụ như ứng dụng của bạn được khởi chạy lần đầu tiên kể từ khi thiết bị khởi động hoặc kể từ khi hệ thống kill app
  • Warm Start (Khởi chạy các tiến trình nhưng chưa tạo Activity). Ví dụ: Khi đưa app xuống background một thời gian dài, hệ thống tự loại bỏ ứng dụng ra khỏi bộ nhớ Stack hiện tại, khi đó các tác vụ và process cần khởi động lại.
  • Hot start Khi mới bắt đầu, tất cả những gì hệ thống làm là đưa Activity của chúng ta lên hàng đầu của Stack. Nếu tất cả các Activity của ứng dụng vẫn nằm trong bộ nhớ, thì ứng dụng có thể tránh phải lặp lại quá trình khởi tạo đối tượng, lạm phát bố cục và hiển thị. Màn Splash này sẽ không chạy khi ở giai đoạn Hot start.

Bài tiếp theo mình sẽ giới thiệu tiếp liên quan đến các yếu tố, cơ chế và triển khai cụ thể kèm code của API Splash Screen nhé.

Leave a Comment

* By using this form you agree with the storage and handling of your data by this website.