Chuyển đến nội dung chính

A Vocabulary of Jetpack Compose Terms

 


Jetpack Compose là bộ công cụ mới để xây dựng giao diện người dùng trong Android.

Mặc dù có rất nhiều mẫu và hướng dẫn có sẵn để tìm hiểu các chi tiết thực tế của

Jetpack Compose, nhưng các thuật ngữ thường được sử dụng mà không cần giải thích.

Bài viết này nhằm mục đích làm rõ những thuật ngữ này cho người đọc không quen với

ý nghĩa của chúng.


1. Architecture

  • Luồng dữ liệu một chiều

Một mẫu mà dữ liệu chỉ chảy theo một hướng. Hãy tưởng tượng rằng chúng ta có một

màn hình được tạo thành từ các thành phần, và các thành phần này được tạo thành từ

các thành phần nhỏ hơn, v.v. Dữ liệu chảy xuống từ các thành phần mẹ đến các thành

phần con của chúng và các sự kiện đi lên từ các thành phần con đến các thành phần mẹ

của chúng, các thành phần này chịu trách nhiệm thay đổi trạng thái của các thành phần

con để phản ứng với các sự kiện này.

Ví dụ:


Một mẫu trong đó dữ liệu chỉ chảy theo một hướng. Hãy tưởng tượng rằng chúng ta có một màn hình được tạo thành từ các thành phần và các thành phần này được tạo thành từ các thành phần nhỏ hơn, v.v .Dữ liệu chảy xuống từ các thành phần cha đến các thành phần con của chúng và các sự kiện chảy lên từ các thành phần con đến các thành phần chính của chúng, chịu trách nhiệm thay đổi trạng thái của các thành phần con để đáp ứng với các sự kiện này.

Nếu người dùng nhập giá trị “frodobaggins” và nhấn nút “Lưu”, trạng thái bên trong của thành phần tên người dùng vẫn chưa thay đổi. Thay vào đó, sự kiện lưu người dùng được gửi đến màn hình, và màn hình lưu dữ liệu vào cơ sở dữ liệu và gửi lại trạng thái mới cho các thành phần con.
  • Giao diện người dùng bắt buộc
Một phong cách phát triển giao diện người dùng trong đó nhà phát triển chỉ định cách thay đổi giao diện người dùng để đáp ứng các sự kiện. Hệ thống xem Android là một ví dụ của phong cách này. Trong khi các dạng xem thường được mô tả bằng XML, cấu trúc phân cấp cây giao diện người dùng được thay đổi để đáp ứng với các sự kiện. Ví dụ: để đặt văn bản trên TextView, findViewById được sử dụng để tìm chế độ xem và sau đó setText để thay đổi văn bản.
  • Giao diện người dùng khai báo
Một phong cách phát triển giao diện người dùng trong đó nhà phát triển mô tả giao diện người dùng trông như thế nào dựa trên trạng thái hiện tại. Giao diện người dùng không bị thay đổi theo các sự kiện, mà là toàn bộ giao diện người dùng được tạo lại khi trạng thái thay đổi và chỉ những thay đổi cần thiết mới được áp dụng. Jetpack Compose là một ví dụ cho phong cách này.

2. Basics
  • Composable functions
Khối xây dựng của việc tạo giao diện người dùng trong Jetpack Compose. Để tạo một hàm có thể tổng hợp, hãy chú thích một hàm Kotlin bằng @Composable. Hàm không bị giới hạn về mặt tham số nhưng không được có kiểu trả về rõ ràng (ngoài Đơn vị).

Ví dụ: Dưới đây là một ví dụ về một chức năng có thể kết hợp sẽ hiển thị một màn hình với các chi tiết phim.

@Composable
fun NetflixClone(movie: Movie){
...
}

  • Modifiers

Làm thay đổi kích thước, bố cục, hành vi và hình thức của một tập hợp. Để tạo một công cụ sửa đổi, hãy sử dụng một trong các phương pháp gốc của Công cụ sửa đổi. Các bổ ngữ có thể được xâu chuỗi, nhưng lưu ý rằng thứ tự của các bổ ngữ rất quan trọng. Nếu một tác phẩm tổng hợp cụ thể không có đối số rõ ràng như bạn muốn, thì đó có thể là một công cụ sửa đổi.


Dưới đây là ví dụ về một văn bản có thể kết hợp hiển thị tên của một bộ phim sử thi ️🧝‍♀️ với một chút đệm dọc và ngang.


Text(text = "The Fellowship of the Ring", style = MaterialTheme.typography.h1,
modifier = Modifier.padding(horizontal = 16.dp, vertical = 4.dp

  • Recomposition

Tự động gọi lại một chức năng có thể tổng hợp với dữ liệu mới để các thành phần giao diện người dùng được phát ra được vẽ lại bằng dữ liệu mới. Jetpack Compose sử dụng tính năng sắp xếp lại thông minh để chỉ vẽ lại những gì cần thay đổi.


3. Layout & design

  • LazyRow / LazyColumn

Các tập hợp chỉ soạn và sắp xếp các tập hợp con hiển thị trong chế độ xem. Điều này đặc biệt dành cho các trường hợp sử dụng trong đó có nhiều tệp tổng hợp con trong bố cục, để giao diện người dùng luôn hoạt động hiệu quả. LazyRow đặt các thành phần theo chiều ngang, trong khi LazyColumn đặt các thành phần theo chiều dọc.

  • Content composable lambda

Lambda lấy một tham số nội dung với kiểu @Composable () -> Unit

  • Slot APIs

Sử dụng một số lambdas có thể tổng hợp nội dung để đặt các thành phần kết quả vào các vị trí xác định trước cụ thể trong giao diện người dùng. Scaffold, được định nghĩa bên dưới, là một ví dụ về một tập hợp có thể sử dụng các API vị trí.

  • Scaffold

Đơn giản hóa việc tạo giao diện người dùng Material Design bằng cách cung cấp cấu trúc để bố trí trong các bảng tổng hợp tùy chỉnh của bạn. Ví dụ: Scaffold cung cấp các vị trí cho thanh trên cùng, thanh dưới cùng, nút tác vụ nổi, ngăn kéo và nội dung màn hình của bạn.


4. State

  • State

Một giá trị thay đổi theo thời gian. Ví dụ, một biến đơn giản là trạng thái. Họ các hàm stateOf tạo ra các chủ sở hữu giá trị trong đó phạm vi Compose sẽ đăng ký các thay đổi của giá trị.

  • State hoisting

Mẫu trong đó trạng thái của tệp sáng tác con được di chuyển (hoặc được kéo lên) về chế độ có thể tổng hợp mẹ của nó. Điều này có nghĩa là chỉ thành phần chính có thể thay đổi trạng thái và thành phần con do đó không có trạng thái.

  • Stable

Các thành phần chỉ chấp nhận đầu vào ổn định có thể được bỏ qua một cách an toàn trong quá trình tái cấu trúc. Nguyên thủy, đối tượng chuỗi và giao diện vốn đã ổn định và các đối tượng được đánh dấu rõ ràng bằng chú thích @Stable có thể được ổn định.

  • Key composable

Xác định các tổng hợp nội dung bằng khóa của một hoặc nhiều giá trị. Các phím không nhất thiết phải là duy nhất trên toàn cầu, chỉ trong số các phím có thể tổng hợp tại trang web gọi cụ thể.

  • Remember

Một hàm có thể kết hợp lưu trữ trạng thái trong bộ nhớ trong quá trình thành phần ban đầu và trả về giá trị trong quá trình sắp xếp lại.


5. Advanced topics

  • Side-effect

Thay đổi trạng thái của ứng dụng xảy ra bên ngoài phạm vi của chức năng có thể kết hợp.

  • Effect

Một chức năng có thể tổng hợp không tạo ra các thành phần giao diện người dùng nhưng gây ra các tác dụng phụ để chạy khi quá trình sáng tác hoàn tất. Một ví dụ về hiệu ứng trong Jetpack Compose là LaunchedEffect, khởi chạy một quy trình nhận biết vòng đời có thể tổng hợp bên ngoài chương trình tổng hợp.


References:


Bắt đầu với Jetpack Compose (tài liệu chính thức)


State documentation (tài liệu chính thức)


Nhận xét

Bài đăng phổ biến từ blog này

Jetpack Compose VS SwiftUI !VS Flutter

  Việc phát triển Android đã trở nên dễ dàng hơn khi các bản cập nhật liên tục đến. Sau bản cập nhật 2020.3.1, rất nhiều thứ đã thay đổi. Nhưng thay đổi chính mà tôi nghĩ hầu hết các nhà phát triển phải chờ đợi là Jetpack Compose cho ứng dụng sản xuất. Và Kotlin là lựa chọn duy nhất cho jetpack Compose, cũng là ngôn ngữ được ưu tiên. Để biết thêm chi tiết hoặc các thay đổi trên Jetpack Compose, bạn có thể truy cập vào https://developer.android.com/jetpack/compose Tương tự, IOS Development cũng cung cấp một tùy chọn để phát triển khai báo, SwiftUI. Trong IDE, không có thay đổi nào do điều này. Nhưng khái niệm gần giống với Jetpack Compose. Thay vì bảng phân cảnh, chúng tôi tạo giao diện người dùng bằng Swift. Để biết thêm chi tiết hoặc các thay đổi trên SwiftUI, hãy truy cập https://developer.apple.com/xcode/swiftui/ Hãy xem cách cả hai hoạt động bằng cách sử dụng một dự án demo. Tôi đã lấy một số ví dụ về số lần chạm tương tự của Flutter. 1. Android Jetpack Compose Chúng tôi có thể tạo

Thiết kế giao diện với DotNetBar (Phần 1)

Đây là phiên bản DotNetBar hỗ trợ C# và Visual Basic https://www.dropbox.com/s/wx80jpvgnlrmtux/DotNetBar.rar  , phiên bản này hỗ trợ giao diện Metro cực kỳ “dễ thương” Các bạn load về và cài đặt, khi cài đặt xong sẽ có source code mẫu của tất cả các control. Để sử dụng được các control của DotNetBar các bạn nhớ add item vào controls box. Thiết kế giao diện với DotNetBar, giao diện sẽ rất đẹp. Link các video hướng dẫn chi tiết cách sử dụng và coding: http://www.devcomponents.com/dotnetbar/movies.aspx Hiện tại DotNetBar có rất nhiều công cụ cực mạnh, trong đó có 3 công cụ dưới đây: DotNetBar for Windows Forms Requires with Visual Studio 2003, 2005, 2008, 2010 or 2012.   DotNetBar for WPF Requires with Visual Studio 2010 or 2012 and Windows Presentation Foundation.   DotNetBar for Silverlight Requires with Visual Studio 2010 or 2012 and Silverlight. Dưới đây là một số hình ảnh về các control trong DotnetBar.   Metro User Interface  controls with Metro Tiles, toolbars, slide panels, forms,

Một số bài tập Winform C#

Một số bài tập: 1. Mô phỏng game đoán số. Luật chơi:         o Đúng số và đúng vị trí   +         o Đúng số mà sai vị trí      ?         o Sai số và sai vị trí          -         . . .         - Kết quả được tạo ngẫu nhiên từ các số có 4 chữ số.         - Các chữ số có giá trị từ 0-6.         - Người chơi có 6 lần đoán. Chương trình tham khảo: 2. In số điện tử Yêu cầu: người dùng nhập vào 1 số ( hoặc 1 chuỗi số) yêu cầu in ra số đó dưới dạng số điện tử. Chương trình tham khảo: 3. Mô phỏng game CARO  (update) 4. Mô phỏng game DÒ MÌN (update)