Android – Chế độ xem Compound

Tram Ho

Trong bài viết này, tôi sẽ nói về compound view trong Android.

  • What is a compound view?
  • What are the advantages of using it?
  • How to write one?

Tôi sẽ trả lời câu hỏi này bằng cách viết một compound view đơn giản hiển thị xếp hạng từ các mạng xã hội.

What is a compound view ?

Compound view về cơ bản là một ViewGround có các hành động được xác định trước và một tập hợp các View bên trong nó. Trong ví dụ này, compound view là một LinearLayout cùng với 3 TextView bên trong, animation và hiệu ứng fadeIn.

What are the advantages of a compound view?

  • Đóng gói và tập trung xử lý logic.
  • Tránh code duplicate.
  • Dễ dàng maintain và modify trong tương lai.

Writing a compound view

Hãy tưởng tượng ứng dụng của mình hiển thị các số điểm ưa thích của ứng dụng và những POI đó có các rating được liên kết từ nhiều nguồn khác nhau, bạn sẽ hiển thị rating ở nhiều nơi, POI có thể có xếp hạng Facebook nhưng không phải là Foursquare và trong tương lai chúng ta có thể có nguồn xếp hạng mới.

Sử dụng compound view, Tôi có thể gói gọn tất cả logic này và có thể dễ dàng thay đổi nó trong tương lai nếu cần thiết.

XML Layout

Đây là file XML layout tôi đang sử dụng để inflate vào LinearLayout, chú ý merge Đây là một thành phần quan trọng, thẻ merge là một cách để tránh ViewGroup dư thừa, nói cách khác, nếu chúng ta inflate này vào LinearLayout, chúng ta sẽ không nên sử dụng LinearLayout parent trong XML, nếu không cuối cùng chúng ta sẽ có 2 LinearLayout, 1 trong số đó không cần thiết.

Không dùng merge

  • LinearLayout -> LinearLayout -> 3 TextViews

Sử dụng merge

  • LinearLayout -> 3 TextViews

RatingsView

Method init() là nơi logic xảy ra, chúng inflate vào XML layout và truyền “this” vào parameter thứ 3, các View inflate sẽ được thêm vào như là children của LinearLayout. Sau đó, tôi set visibility cho views là gone và thêm animation đơn giản fadeIn.

setPOI() nhận một đối tượng POI và thiết lập chế độ xem để hiện thị xếp hạng khả dụng cho POI đó. Và điều đó, tôi biết có một compound view mà tôi có thể sử dụng ở mọi nơi trong ứng dụng của mình.

Bạn có thể thấy rằng điều này tránh duplicate logic mỗi lần tôi muốn hiển thị rating, nếu tôi cần thêm rating mới, tôi chỉ cần thay đổi nó trong class RatingsView để tránh code duplicate.

Tài liệu tham khảo

https://medium.com/@Sserra90/android-writing-a-compound-view-1eacbf1957fc

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo