Mặc dù ngày càng phổ biến, các ứng dụng trò chuyện và nhắn tin vẫn tiếp tục chậm triển khai. Điều này phần lớn là do tài liệu chính thức không tồn tại, trong khi các hướng dẫn không chính thức thì khan hiếm và thường lỗi thời
Hướng dẫn này là một nỗ lực để thu hẹp khoảng cách này
Tất cả chúng ta đều đã thấy các bong bóng trò chuyện đầy màu sắc chứa đầy văn bản, hình ảnh, thậm chí cả phương tiện có thể phát được – làm thế nào để họ xây dựng nó? . RecyclerViews, cùng với mẫu ViewHolder
Hướng dẫn này hướng dẫn bạn qua các bước cần thiết để xây dựng giao diện người dùng nhắn tin chất lượng, xây dựng nền tảng để hỗ trợ văn bản, hình ảnh và phương tiện có thể phát được đề cập ở trên
Hướng dẫn này xem xét việc tạo
- Giao diện nhắn tin
Bộ điều hợp cho RecyclerView
Hoạt động kênh
Hướng dẫn này yêu cầu
Studio Android. 4. 0. 2
Phiên bản android. 10API 29
SDK lõi Sendbird. 3. 0. 148
Xin lưu ý rằng hướng dẫn này giả định sự quen thuộc cơ bản với phát triển Android
Bước 1. Tạo giao diện người dùng nhắn tin
Tạo giao diện người dùng hoạt động
Trong hướng dẫn này, chúng ta sẽ tạo một hoạt động dành riêng để lưu trữ các tin nhắn của mình. Đối với hoạt động này, chúng tôi sẽ cần một XML. Vì vậy, điều đầu tiên chúng ta sẽ làm là tạo activity_channel. xml
Thành phần chính trong hoạt động này là RecyclerView sẽ chiếm phần lớn màn hình. Bạn sẽ lưu ý rằng cũng có AppBarLayout với ToolBar. Chúng tôi sẽ không làm gì nhiều với điều này ngay bây giờ nhưng nói chung, bạn có thể thêm nút “Quay lại”, nút “Giới thiệu” hoặc thông tin về kênh tại đây. Điều cuối cùng chúng ta sẽ thêm là một RelativeLayout sẽ chứa các nút “EditText” và “Send”. Đây tương ứng sẽ là cách người dùng sẽ nhập văn bản và gửi nó. Trong RelativeLayout này, bạn cũng có thể thêm các biểu tượng để hỗ trợ thêm
Tạo một mục danh sách cho mỗi tin nhắn
Sử dụng một tệp XML riêng để xác định bố cục của từng mục [i. e. , tin nhắn] cho RecyclerView. Đó là thông lệ phổ biến cho mỗi tin nhắn chứa một cái gì đó giống như trên [tôi. e. tên người gửi, ảnh hồ sơ của họ và dấu thời gian]. Vì căn chỉnh của bong bóng trò chuyện thường cho biết chủ sở hữu của tin nhắn nên việc hiển thị ảnh hồ sơ và tên của người gửi cho mọi tin nhắn sẽ là thừa. Ví dụ: trong hình trên, bong bóng trò chuyện được căn phải cho biết nó thuộc về người gửi, vì vậy chúng tôi không cần đưa hình ảnh hoặc tên vào
Chúng ta cần tạo hai XML khác nhau. đầu tiên. xml sẽ dành cho tin nhắn từ phối cảnh “Tôi” hoặc tin nhắn được gửi bởi người dùng hiện tại. Đối với điều này, chúng tôi đã chọn có TextView cho thông báo thực tế được bao bọc trong Cardview. Bao quanh TextView này là các TextView khác cho những thứ như Date
Thư hai. xml sẽ dành cho các tin nhắn từ phối cảnh “Khác” – điều này có nghĩa là bất kỳ tin nhắn nào mà người dùng hiện tại không gửi. Giao diện người dùng này sẽ tương tự như giao diện người dùng “Tôi”. Tuy nhiên, nó được căn trái và chứa thông tin về người dùng “Khác”, chẳng hạn như ImageView cho ảnh hồ sơ và TextField cho tên người dùng. Ngoài ra, các quan điểm tương đối giống nhau
Bước 2. Tạo bộ điều hợp cho Recyclerview
Bây giờ chúng tôi đã tạo giao diện người dùng để trò chuyện, chúng tôi sẽ cần kết nối các tin nhắn với giao diện người dùng. Chúng tôi sẽ làm điều này với một RecyclerView. bộ chuyển đổi
Bộ điều hợp này sẽ hoàn thành ba điều. Nó sẽ
- Lưu trữ danh sách Tin nhắn
- Xác định xem một tin nhắn được gửi hay nhận
- Thổi phồng bố cục thích hợp trong RecyclerView
Nhưng trước khi mạo hiểm hơn nữa, chúng ta cần một danh sách các tin nhắn
Kỹ thuật phụ trợ cho nhắn tin thời gian thực nằm ngoài phạm vi của hướng dẫn này. Do đó, chúng tôi sẽ tiếp tục với các mô hình trong SDK trò chuyện của Sendbird. Nó đại khái giả định cấu trúc sau
Mô hình người dùng và thông báo chung
class Message { String message; User sender; long createdAt; } class User { String nickname; String profileUrl; }
Vì người ta thường thiết kế triển khai nhắn tin theo cách này, hy vọng bạn sẽ có thể làm theo hướng dẫn này với những thay đổi tối thiểu đối với mã của bạn
Bây giờ, hãy tạo một bộ điều hợp và đặt tên là MessageListAdapter. Điều này sẽ giữ một danh sách các Tin nhắn sẽ được hiển thị trong RecyclerView
Theo mặc định, bộ điều hợp yêu cầu ít nhất một Viewholder. Đây là một bố cục có thể được thổi phồng và ràng buộc bởi các đối tượng mà nó chứa. Trong trường hợp của chúng tôi, chúng tôi sẽ bắt đầu chỉ với hai. một SendMessageHolder và một ReceivedMessageHolder. Khi bạn thêm nhiều loại tin nhắn hơn, bạn có thể thêm nhiều chủ sở hữu hơn. Hướng dẫn này tập trung vào Tin nhắn của người dùng hoặc tin nhắn dựa trên văn bản
Để thực hiện điều này, chúng tôi sẽ có hai lớp bên trong riêng bên trong MessageListAdapter của chúng tôi
Mỗi ViewHolder giữ các dạng xem thành viên có thể được liên kết với thông tin cụ thể có trong một thông báo. Ví dụ: TextView messageText liên kết với nội dung của thư, trong khi nameText liên kết với tên của người gửi thư. Antonio Leiva gợi ý rằng chúng ta nên triển khai phương thức liên kết [đối tượng] trong lớp ViewHolder. Điều này cho phép xem liên kết với lớp ViewHolder thay vì onBindViewHolder. Do đó, nó tạo ra mã sạch hơn giữa nhiều ViewHolders và ViewTypes. Nó cũng cho phép chúng tôi dễ dàng thêm OnClickListener, nếu cần
Khi bạn hoàn thành ViewHolder, hãy quay lại bộ điều hợp và ghi đè các phương thức cần thiết để
- Nhận tin nhắn từ MessageList
- Xác định xem đó là tin nhắn đã gửi hay tin nhắn đã nhận
- Thổi phồng bố cục thích hợp cho ViewHolder
- Truyền tin nhắn cho ViewHolder để ràng buộc
Việc thực hiện quy trình này là tiêu chuẩn cho hầu hết các Bộ điều hợp và tương đối dễ hiểu;
Chúng tôi vừa hoàn thành Adapter. Giờ đây, chúng tôi có thể hiển thị danh sách cả tin nhắn đã gửi và đã nhận trong bong bóng trò chuyện mà chúng tôi đã xác định trước đó
Bước 3. Tạo hoạt động kênh
Chúng tôi đã tạo tất cả các thành phần và bây giờ chúng tôi cần khởi tạo chúng bên trong hoạt động của mình. Tạo một hoạt động gọi là MessageListActivity. Trong onCreate của bạn, hãy tạo một RecyclerView và MessageListAdapter với một danh sách các tin nhắn và thì đấy. Bạn vừa tạo giao diện người dùng nhắn tin của riêng mình
Phần kết luận
Bạn có thể xây dựng các tính năng nâng cao như xem trước hình ảnh, GIF động trong bong bóng trò chuyện, v.v. Xem các ví dụ về giao diện người dùng trò chuyện nâng cao tại ứng dụng giao diện người dùng mẫu mã nguồn mở của Sendbird. Điều này được xây dựng dựa trên việc sử dụng RecyclerViews và bộ điều hợp mà chúng tôi đã trình bày trong hướng dẫn này và sẽ giúp bạn tạo một ứng dụng trò chuyện cấp sản xuất với nhiều tính năng khác nhau