fbpx

1. Layout trong Android là gì?

Layout là thành phần định nghĩa cấu trúc giao diện người dùng hay nói cách khác là thành phần quyết định đến giao diện của một màn hình trong ứng dụng Android. Một layout hỗ trợ việc căn chỉnh các widget (Ví dụ: TextView, Button, hay EditText…)  như chúng ta thấy trong các ứng dụng Android.

Toàn bộ cấu trúc giao diện mà chúng ta thấy trong ứng dụng Android đều được thiết kế trong một layout. Mỗi layout được định nghĩa là một file xml và được đặt trong App > res > Layouttrong Android Studio.

2. Các loại layout trong Android

Trong Android thì có nhiều loại layout, mỗi loại sẽ có tác dụng riêng. Để các bạn không bị lạc trong mớ bòng bong đó, mình sẽ tóm tắt các loại layout hay được sử dụng nhất khi thiết kế giao diện cho ứng dụng:

Các loại layout trong android

Các loại layout trong android

LinearLayout

Linear Layout có lẽ là loại layout hay được sử dụng nhất vì tính đơn giản của nó. LinearLayout sẽ bố trí các view theo dạng khối và không đè lên nhau. Linear Layout có hai chiều bố trí bố cục là:

  • Vertical Orientation – các view bên trong sẽ được sắp xếp theo chiều dọc
  • Horizontal Orientation – Tương tự nhưng theo chiều ngang

Nếu bạn chưa hình dung ra thì mình minh họa bằng hình vẽ bên dưới.Tại ví dụ này, LinearLayout được thiết lập là Vertical Orientation. Do đó Text View, Edit Text, và Button được canh chỉnh theo chiều dọc( từ trên xuống dưới)

Linnear Layout Trong Android

Linnear Layout Trong Android

RelativeLayout:

Relative Layout là loại layout mà ở đó vị trí các widget (Text Views, Buttons,…)  phụ thuộc vào vị trí các widget khác hoặc view cha. Ví dụ về RelativeLayout như hình bên dưới.

Relative Layout trong Android

Relative Layout trong Android

Trong hình trên, nút “ Forgot password” phục thuộc vào vị trí của nút ” Login”. Nếu vị trí nút “Login” thay đổi thì nút “Forgot password” cũng thay đổi theo. Còn với nút “Register a new Account” được căn chỉnh theo view cha, nó luôn nằm ở phía cuối cùng của view cha.

ListView/RecyclerView

Đúng như tên gọi, ListView là layout để hiển thị các view con dưới dạng danh sách. Để xây dựng được danh sách thì ListView cần thêm một Adapter nữa.

Listview trong Android

Listview trong Android

RecyclerView cũng giống với List View, nhưng được bổ sung thêm nhiều tính năng hơn.

Đây là một trong những Layout rất hữu ích và rất hay được sử dụng trong các ứng dụng cần hiển thị dữ liệu có cấu trúc giống nhau như: Đọc báo, quản lý file,…

GridView

Grid View là một View Layout ở đó các item (hình ảnh, file,…) được đặt trong một Grid(lưới) như hình dưới đây

Gridview trong Android

Gridview trong Android

Về cơ bản cách xây dựng GridView rất giống với Listview, cũng cần một Adapter để có thể đưa dữ liệu hiển thị trên GridView

Trên đây là những loại Layout rất cơ bản và hay sử dụng trong ứng dụng Android. Tuy nhiên, như các bạn biết Android là hệ điều hành mở nên các thiết bị Android cũng cực kì đa dạng với đủ các loại kích thước và hình dáng.

Vậy làm thế nào để ứng dụng của chúng ta hiển thị đẹp trên tất cả các loại màn hình đây?

Và bây giờ mình sẽ chia sẻ công thức để tạo giao diện có thể hiển thị đẹp trên nhiều loại kích thước màn hình khác nhau. Bạn hãy đọc tiếp!

3. Thiết kế giao diện hỗ trợ đa màn hình trong Android

Như mình đã nêu vấn đề ở trên, Android là một hệ điều hành mở với đủ loại thiết bị khác nhau. Khi đó các nhà phát triển sẽ phải đối mặt với việc ứng dụng sẽ hiển thị trên các màn hình  độ phân giải khác nhau.

Có thể bạn đã đọc một số hướng dẫn và tài liệu tham khảo rồi mà vẫn rồi mà vẫn không hiểu rõ cách làm. Chính vì vậy mình quyết định viết các bài hướng dẫn này để giúp các bạn có thể tự tin thiết kế ứng dụng với trải nghiệm tốt nhất trên nhiều loại màn hình.

Trước khi tìm hiểu chi tiết cách hỗ trợ đa kích thước và độ phân của màn hình. Chúng ta cần biết một số thuật ngữ sau:

– Độ phân giải – Resolution: là số pixel trên màn hình thiết bị. Ví dụ 480×800,…
– Mật độ điểm ảnh – Density(dpi): là số pixel trong một khu vực cụ thể. Thường là số pixel trên mỗi inch. Đây là thước đo chất lượng màn hình.
– Hướng màn hình – Orientation: Là cách màn hình được định hướng. Điện thoại thì chỉ có 2 trường hợp: xoay ngang (Landscape) hoặc dọc (Protrait).

Thiết kế dựa vào kích thước màn hình

Trong Android thì người ta có định nghĩa về kích thước màn hình  như sau:

Kích thước màn hình

Kích thước màn hình

Khi chạy ứng dụng, với mỗi kích thước màn hình thì layout ở thư mục tương ứng sẽ được hiển thị. Còn nếu không có thư mục layout nào phù hợp mới kích thước màn hình đó thì thư mục layout mặc định sẽ được hiển thị

Thư mục res layouts

Thư mục res layouts

Khi chạy ứng dụng, với mỗi kích thước màn hình thì layout ở thư mục tương ứng sẽ được hiển thị. Còn nếu không có thư mục layout nào phù hợp mới kích thước màn hình đó thì thư mục layout mặc định sẽ được hiển thị

Cấu trúc thư mục layout

Cấu trúc thư mục layout

Như bạn có thể thấy, mỗi thư mục chứa các file layout có tên giống nhau. Điều duy nhất thay đổi là nội dung bên trong các file layout đó

Ví dụ, nếu chúng ta mở file main.xml, trong hai thư mục này, bạn sẽ thấy giá trị margin được thiết kế khác nhau tùy vào kích thước của màn hình

Thiết kế layout

Thiết kế layout

Như vậy là đã xong màn hình dọc. Thế còn màn hình ngang thì sao? Nếu người dùng xoay ngang màn hình thì có thể thiết kế layout dành riêng cho nó không?

Tất nhiên là có thể rồi! bạn làm tương tự như trên và chỉ cần thêm -land vào cuối thư mục layout.

Như vậy là chúng ta có thể hỗ trợ khá nhiều loại màn hình trong Android  rồi đấy!!.

Mình đoán bạn sẽ đang tự, với layout cho màn hình ngang thì cần thay đổi gì trong code không? Tất nhiên là khác rồi, màn hình dọc với ngang rõ ràng khác nhau mà ^^.

Như bên dưới là một cách giải quyết của mình cho hai kiểu màn hình dọc và ngang:

Layout hỗ trợ chiều dọc chiều ngang

Layout hỗ trợ chiều dọc chiều ngang

Thiết kế dựa vào mật độ điểm ảnh(DPI)

Với các màn hình có kích thước khác nhau thì phân chia thư mục layout như trên. Đồng thời chúng ta cũng cần lưu ý đến trường hợp có cùng kích thước ( ví dụ cùng màn hình 5.5 inch) nhưng lại có mật độ điểm ảnh(DPI) khác nhau. Để giải quyết vấn đề này thì chúng sẽ phân chia thư mục drawable

Mật độ điểm ảnh sẽ ảnh hưởng trực tiếp lên việc hiển thị các ảnh, icon sử dụng trong ứng dụng. Đó là lý do tại sao chúng ta phải tạo nhiều thư mục drawable

Tương tự, ta có bảng quy ước sau:

Kich thước màn hình DPI

Kich thước màn hình DPI

Cũng giống như việc phân chia các thư mục layout, các thư mục drawable sẽ có cấu trúc như sau.

Cấu trúc thư mục theo dpi

Cấu trúc thư mục theo dpi

Tổng kết

Như vậy là chúng ta sẽ hoàn thành tìm hiểu layout trong android. Cũng như cách thiết kế layout để ứng dụng có thể hiển thị tốt trên nhiều màn hình khác nhau. Việc thiết kế layout trong Android luôn là một công đoạn cần nhiều thời gian và tỉ mỉ. Nhưng thành quả thu được sẽ cực kì ngọt ngào.

Bài viết tham khảo từ nguồn: https://vntalking.com/cac-loai-layout-trong-android.html

Summary
Review Date
Reviewed Item
Android Layout
Author Rating
51star1star1star1star1star

About the author

Kevin Dang

Hey there! My name is Kevin Dang, I am website, software, mobile app develop, web admin system. Expert living in Hồ Chí Minh (Việt Nam). I am very interested in digital marketing with: SEO, Facebook, Google Ads ... This blog is where I will share the experiences, techniques and knowledge I have learned.