Chủ Nhật, 11 tháng 3, 2018

Hiểu về View, ViewGroup, Layout trong Android

Để tạo ra một giao diện người dùng trong ứng dụng Android, chúng ta xây dựng từ sự kết hợp các thành phần có tên là View, ViewGroup, Layout.

Nguồn: https://xuanthulab.net/hieu-ve-view-viewgroup-layout-trong-android.html

View và ViewGroup

Các thành phần giao diện thường là một lớp kế thừa từ lớp View (android.view.View) của Android, các thành phần này cung cấp sẵn khá đa dạng như Button, TextView, CheckBox ... tất cả chúng ta gọi nó là View
Trong Android có một loại view có tên là ViewGroup (android.view.ViewGroup) nó có chứa các ViewViewGroup khác bên trong. Ví dụ như RadioGroup, bên trong nó chứa nhiều RadioButton để người dùng bật một trong các nút đó sang on. Với cấu trúc này thì View gồm có một View cha (kế thừa từ ViewGroup) và các phần tử View khác bên trong gọi là View con.

Android có sẵn nhiều loại View, ViewGroup, Layout mà ở chế độ Design bạn có thể kéo thả để xây dựng giao diện
Các ViewGroup cũng như một phần tử chứa các View con, và ViewGroup cũng được kế thừa trở thành phần gốc để xây dựng UI gọi là layout

Các layout

Các layout chính là các View (cụ thể nó kế thừa thừa ViewGroup) được thiết kế với mục đích chứa các View con và điều khiển, sắp xếp vị trí các View con đó trên màn hình, mỗi layout có cơ chế điều khiển vị trí View con riêng của mình. Có một số layout mà bạn tham khảo trước tiên như:
  • ConstraintLayout (giới thiệu trong Android 7), sử dụng layout này được khuyến khích cho hầu hết trường hợp. ConstraintLayout cho phép điều khiển vị trí và ứng sử của các view con trong layout bằng cách gán dàng buộc đơn giản vảo mỗi view con. Từ đó mà một bố cục phức tạp có thể dễ dàng được tạo ra mà sử dụng ít nhất sự lồng nhau trong layout (layout này nằm trong layout khác) giúp cho cải thiện tốc độ. ConstraintLayout cũng tích hợp sẵn vào Android Studio Layout Editor nên bạn có thể điều chỉnh một cách trực quan các View con trong layout này.
  • LinearLayout với layout này thì các view con được xếp nối tiếp nhau (linear) thành một hàng hay một cột (tùy vào lúc thiết kế thiết lập hướng xếp). Có một giá trị weight có thể gán vào mỗi View con để cho biết View con đó chiếm bao nhiêu không gian trong một tỷ lệ tương quan với các View con khác.
  • AbsoluteLayout cho phép định vị các View con bằng cách chỉ ra cụ thể tọa độ X, Y của View con. Mặc dù sử dụng layout này tối ưu về hiệu suất hoạt động nhưng lại không mềm dẻo khi ứng dụng chạy trên nhiều màn hình, khi ứng dụng xoay màn hình. (Đã lỗi thời - không nên dùng)
  • RelativeLayout chô phép các view con định vị căn vào liên hệ với các view con khác đồng thời liên hệ với view cha thông qua các tham số align và margin. Ví dụ một View con thiết lập nằm ở giữa RelateiveLayout (android:layout_centerInParent="true"), một View con khác có thể thiết lập nằm căn trùng lề phải với View này (android:layout_alignRight="@+id/other")
  • TableLayout cung cấp khả năng bố trí các view con thành một lưới dạng bảng (gồm có hàng và cột). Một dòng của bảng biểu diễn bàng đối tượng view con TableRow, trong nó chứa có phần tử View con hiểu như các ô bảng.
  • FrameLayout đơn giản chỉ cung cấp một vùng màn hình, thường dùng nó để hiện thị một View con duy nhất. Nếu đặt vào nó nhiều view con, thì mặc định các view con này sẽ xếp chồng lên nhau. Tuy vậy, vị trí các view con trong nó cũng có thể điều chỉnh thông qua giá trị tham số gravity, ví dụ trong view con thiết lập android:layout_gravity="bottom|right" thì view con nằm về phía trái, dưới của FrameLayout
  • GridLayout chia ra thành lưới gồm một số hàng và một số cột để chứa các view con.
  • CoordinatorLayout nó được thiết kế nhằm mục đích có sự tương tác của các View con trong nó, đặc biệt sử dụng với ActionBar, FloatingActionButton, Snackbar ...

Hệ thống cấp bậc các View

Mỗi View trong hệ thống giao diễn được biểu diễn bởi một hình chữ nhật, nó vẽ trên nó thông tin gửi tới người dùng cũng như là nơi để nhận thông tin nhập vào như nhập dữ liệu, chạm, vuốt. Một giao diện người dùng được bắt đầu bằng một View gốc, bên trong nó chứa các View con, đến lượt các View con lại có thể chứa các View con khác ... Cứ như vậy, giao diện hình thành được biểu diễn như một đồ thị dạng cây nhiều nhánh (view hierarchy)
Tổng kết
Để xây dựng được một giao diện người dùng khi đã hiểu các thành phần ở trên có thể thực hiện dễ dàng và chuẩn mực hơn. Bạn có thể tạo ra một UI bằng nhiều cách: Sử dụng Android Studio Layout Editor với chức năng kéo thả, chỉnh sửa và hiện thị trực quản, có thể chỉnh sửa trực tiếp trên file XML biểu diễn giao diện, có thể viết code Java tạo ra cả một hệ thống Cấp bậc các View.
Tuy nhiên để mang lại hiệu suất của ứng dụng, thì khi tạo giao diện các phần tử càng ít lồng nhau càng tốt, càng ít ràng buộc càng tốt.

Không có nhận xét nào :

Đăng nhận xét

Danh mục Gửi liên hệ

Loading...