Emoji2

Hiển thị biểu tượng cảm xúc trên các thiết bị hiện thời và thiết bị cũ.
Lần cập nhật gần nhất Bản phát hành ổn định Bản phát hành dùng thử Bản phát hành beta Bản phát hành alpha
Ngày 4 tháng 9 năm 2024 1.5.0 - - -

Khai báo phần phụ thuộc

Để thêm một phần phụ thuộc trên Emoji2, bạn phải thêm kho lưu trữ Google Maven vào dự án. Đọc nội dung Kho lưu trữ Maven của Google để biết thêm thông tin.

Thêm các phần phụ thuộc cho cấu phần phần mềm bạn cần trong tệp build.gradle cho ứng dụng hoặc mô-đun của mình:

Groovy

dependencies {
    def emoji2_version = "1.5.0"

    implementation "androidx.emoji2:emoji2:$emoji2_version"
    implementation "androidx.emoji2:emoji2-views:$emoji2_version"
    implementation "androidx.emoji2:emoji2-views-helper:$emoji2_version"
}

Kotlin

dependencies {
    val emoji2_version = "1.5.0"

    implementation("androidx.emoji2:emoji2:$emoji2_version")
    implementation("androidx.emoji2:emoji2-views:$emoji2_version")
    implementation("androidx.emoji2:emoji2-views-helper:$emoji2_version")
}

Để biết thêm thông tin về các phần phụ thuộc, hãy xem nội dung Thêm phần phụ thuộc cho bản dựng.

Ý kiến phản hồi

Ý kiến phản hồi của bạn có thể giúp chúng tôi cải thiện Jetpack. Hãy cho chúng tôi biết nếu bạn phát hiện lỗi mới hoặc có ý tưởng cải thiện thư viện này. Vui lòng xem các lỗi hiện có trong thư viện này trước khi báo một lỗi mới. Bạn có thể thêm lượt bình chọn cho lỗi hiện có bằng cách nhấp vào nút dấu sao.

Báo lỗi mới

Hãy xem tài liệu về Công cụ theo dõi lỗi để biết thêm thông tin.

Emoji2 Emojipicker Phiên bản 1.0

Phiên bản 1.5.0

Ngày 4 tháng 9 năm 2024

Phát hành androidx.emoji2:emoji2-*:1.5.0. Phiên bản 1.5.0 bao gồm các thay đổi sau.

Thay đổi quan trọng kể từ phiên bản 1.4.0

  • Hỗ trợ biểu tượng cảm xúc 15.1 và giao diện người dùng bộ chọn biểu tượng cảm xúc hai chiều. Chỉ cần nhấp vào nút chuyển hai chiều, người dùng có thể chuyển đổi giữa các phiên bản biểu tượng cảm xúc hướng trái và phải.
  • Hỗ trợ bộ chọn biểu tượng cảm xúc nhiều giao diện. Khi nhấn và giữ biểu tượng cảm xúc về cặp đôi, bạn sẽ thấy một bộ chọn biểu tượng cảm xúc về nhiều người cho trạng thái không có người nào. Khi người dùng nhấn vào nửa trái của biểu tượng cảm xúc, bản xem trước biểu tượng cảm xúc ở dưới cùng bên phải sẽ được cập nhật cho phù hợp. Khi người dùng chọn cả hai nửa của một biểu tượng cảm xúc, bản xem trước biểu tượng cảm xúc ở dưới cùng bên phải sẽ hiển thị toàn bộ biểu tượng cảm xúc và người dùng có thể nhập biểu tượng cảm xúc đó.

Phiên bản 1.0.0-alpha03

Ngày 8 tháng 3 năm 2023

Phát hành androidx.emoji2:emoji2-emojipicker:1.0.0-alpha03. Phiên bản 1.0.0-alpha03 bao gồm các thay đổi sau.

Sửa lỗi

  • Xoá các tài nguyên không cần thiết và giảm kích thước thư viện khoảng 0,3 MB.

Phiên bản 1.0.0-alpha02

Ngày 22 tháng 2 năm 2023

Phát hành androidx.emoji2:emoji2-emojipicker:1.0.0-alpha02. Phiên bản 1.0.0-alpha02 bao gồm các thay đổi sau.

Các thay đổi về API

  • Thêm API mới để các ứng dụng Java có thể cung cấp biểu tượng cảm xúc gần đây. (I39d10)

Sửa lỗi

  • Cập nhật tài nguyên biểu tượng cảm xúc để hỗ trợ biểu tượng cảm xúc 15.0 (Ib4eb3)
  • Khi chọn một biểu tượng cảm xúc từ cửa sổ bật lên, cập nhật tất cả các biểu tượng cảm xúc giống nhau thành biểu tượng cảm xúc mới chọn (ngoại trừ hàng biểu tượng cảm xúc gần đây). Đồng thời, thông báo biểu tượng cảm xúc khi nhấp vào biểu tượng. (I892c6)
  • Chờ EmojiCompat tải trước khi hiển thị EmojiPickerView. (I29e03)

Phiên bản 1.0.0-alpha01

Ngày 25 tháng 1 năm 2023

Phát hành androidx.emoji2:emoji2-emojipicker:1.0.0-alpha01. Phiên bản 1.0.0-alpha01 bao gồm các thay đổi sau.

Tính năng mới

  • Ra mắt một bộ chọn biểu tượng cảm xúc mang lại trải nghiệm nhất quán cho người dùng với các biểu tượng cảm xúc mới nhất trên các thiết bị và ứng dụng của Nhà sản xuất thiết bị gốc (OEM) chạy hệ điều hành Android. Bên cạnh các biểu tượng cảm xúc mới nhất, bộ chọn biểu tượng cảm xúc này còn có những giao diện mới nhất cho bộ chọn, bao gồm cả các biến thể biểu tượng cảm xúc theo màu da và khả năng tương thích biểu tượng cảm xúc.

Các thay đổi về API

  • Ra mắt lớp EmojiPickerView cung cấp các biểu tượng cảm xúc mới nhất trong chế độ xem có thể cuộn dọc, cùng với tiêu đề ngang có thể nhấp vào.
  • Bạn có thể thiết lập các cột của lưới bộ chọn biểu tượng cảm xúc bằng thuộc tính XML emojiGridColumns hoặc hàm setEmojiGridColumns().
  • Bạn có thể thiết lập các hàng của lưới bộ chọn biểu tượng cảm xúc bằng thuộc tính XML emojiGridRows hoặc hàm setEmojiGridRows().
  • Bạn có thể dùng setOnEmojiPickedListener() để thiết lập trình nghe khi người dùng chọn một biểu tượng cảm xúc. Trình nghe sẽ được thông báo khi người dùng nhấp vào một biểu tượng cảm xúc bất kỳ.
  • Bạn có thể dùng setRecentEmojiProvider() để cung cấp các biểu tượng cảm xúc mới đây qua trình cung cấp. Đây là một hàm không bắt buộc. Nếu bạn chưa thiết lập trình cung cấp biểu tượng cảm xúc mới nhất, thì thư viện sẽ sử dụng một trình cung cấp mặc định. Hành vi mặc định được xác định như sau: 1) tất cả biểu tượng cảm xúc đã chọn sẽ được lưu ở cấp độ từng ứng dụng trong lựa chọn ưu tiên dùng chung. 2) bộ chọn sẽ hiển thị tối đa là 3 hàng biểu tượng cảm xúc đã chọn, theo thứ tự từ mới nhất đến cũ nhất (các biểu tượng trùng lặp sẽ bị loại bỏ).
  • Ra mắt lớp EmojiViewItem chứa biểu tượng cảm xúc đã hiển thị và các biến thể của biểu tượng cảm xúc đó.
  • Ra mắt giao diện RecentEmojiProvider có thể dùng để cung cấp danh sách biểu tượng cảm xúc gần đây. recentEmojiProvider chịu trách nhiệm cung cấp biểu tượng cảm xúc trong danh mục “Đã dùng gần đây”.

Phiên bản 1.5

Phiên bản 1.5.0

Ngày 4 tháng 9 năm 2024

Phát hành androidx.emoji2:emoji2-*:1.5.0. Phiên bản 1.5.0 bao gồm các thay đổi sau.

Thay đổi quan trọng kể từ phiên bản 1.4.0

  • Hỗ trợ biểu tượng cảm xúc 15.1 và giao diện người dùng bộ chọn biểu tượng cảm xúc hai chiều. Chỉ cần nhấp vào nút chuyển hai chiều, người dùng có thể chuyển đổi giữa các phiên bản biểu tượng cảm xúc hướng trái và phải.
  • Hỗ trợ bộ chọn biểu tượng cảm xúc nhiều giao diện. Khi nhấn và giữ biểu tượng cảm xúc cặp đôi, chúng tôi thấy một bộ chọn biểu tượng cảm xúc nhiều người cho trạng thái 0. Khi người dùng nhấn vào nửa trái của biểu tượng cảm xúc, bản xem trước biểu tượng cảm xúc ở dưới cùng bên phải sẽ được cập nhật cho phù hợp. Khi người dùng chọn cả hai nửa của một biểu tượng cảm xúc, bản xem trước biểu tượng cảm xúc ở dưới cùng bên phải sẽ hiển thị toàn bộ biểu tượng cảm xúc và người dùng có thể nhập biểu tượng cảm xúc đó.

Phiên bản 1.5.0-rc01

Ngày 21 tháng 8 năm 2024

Phát hành androidx.emoji2:emoji2-*:1.5.0-rc01. Phiên bản 1.5.0-rc01 bao gồm các thay đổi sau.

Tính năng mới

  • Hỗ trợ biểu tượng cảm xúc 15.1 và giao diện người dùng bộ chọn biểu tượng cảm xúc hai chiều. Chỉ cần nhấp vào nút chuyển hai chiều, người dùng có thể chuyển đổi giữa các phiên bản biểu tượng cảm xúc hướng trái và phải.
  • Hỗ trợ bộ chọn biểu tượng cảm xúc nhiều giao diện. Khi nhấn và giữ biểu tượng cảm xúc về cặp đôi, bạn sẽ thấy một bộ chọn biểu tượng cảm xúc về nhiều người cho trạng thái không có người nào. Khi người dùng nhấn vào nửa trái của biểu tượng cảm xúc, bản xem trước biểu tượng cảm xúc ở dưới cùng bên phải sẽ được cập nhật cho phù hợp. Khi người dùng chọn cả hai nửa của một biểu tượng cảm xúc, bản xem trước sẽ hiển thị toàn bộ biểu tượng cảm xúc và người dùng có thể nhập biểu tượng đó.

Sửa lỗi

  • Xoá phần trình bày quyền truy cập vào API nền tảng mới theo cách thủ công vì việc này diễn ra tự động thông qua tính năng tạo mô hình API khi sử dụng R8 với AGP 7.3 trở lên (ví dụ: R8 phiên bản 3.3) và cho tất cả các bản dựng khi sử dụng AGP 8.1 trở lên (ví dụ: D8 phiên bản 8.1). Những ứng dụng không sử dụng AGP nên cập nhật lên D8 phiên bản 8.1 trở lên. Xem bài viết này để biết thêm chi tiết. (If6b4c, b/345472586)
  • Chỉ báo và lựa chọn thẻ của EmojiPickerView sẽ cập nhật sau một lần nhấp. (146b02, b/288261054)
  • Lựa chọn thẻ và chỉ báo của EmojiPickerView bị hỏng. (5e1f14, b/273883688)

Phiên bản 1.5.0-beta01

Ngày 10 tháng 7 năm 2024

Phát hành androidx.emoji2:emoji2-*:1.5.0-beta01. Phiên bản 1.5.0-beta01 bao gồm các thay đổi sau.

Tính năng mới

  • Hỗ trợ biểu tượng cảm xúc 15.1 và giao diện người dùng chọn biểu tượng cảm xúc hai chiều.
  • Hỗ trợ thiết kế lại lựa chọn nhiều màu da.

Sửa lỗi

  • Lựa chọn thẻ và chỉ báo của EmojiPickerView sẽ cập nhật sau một lượt nhấp. (146b02, b/288261054)
  • Lựa chọn thẻ và chỉ báo của EmojiPickerView bị hỏng. (5e1f14, b/273883688)

Phiên bản 1.5.0-alpha01

Ngày 13 tháng 12 năm 2023

Phát hành androidx.emoji2:emoji2-*:1.5.0-alpha01. Phiên bản 1.5.0-alpha01 bao gồm các thay đổi sau.

Tính năng mới

  • emoji2-bundled chứa phông chữ biểu tượng cảm xúc mới cập nhật để hỗ trợ Emoji 15.1.

Thay đổi về API

  • Thêm trình thực thi để kiểm soát luồng gọi lại cho InitCallback. (I32b67)
  • BundledEmojiCompatConfig hiện sử dụng một trình thực thi để kiểm soát các luồng tải. (I00e81)

Phiên bản 1.4

Phiên bản 1.4.0

Ngày 9 tháng 8 năm 2023

Phát hành androidx.emoji2:emoji2-*:1.4.0. Phiên bản 1.4.0 bao gồm các thay đổi sau.

Thay đổi quan trọng kể từ phiên bản 1.3.0

Phiên bản 1.4.0-rc01

Ngày 26 tháng 7 năm 2023

Phát hành androidx.emoji2:emoji2-*:1.4.0-rc01. Phiên bản 1.4.0-rc01 bao gồm các thay đổi sau.

Thay đổi về API

  • Giới thiệu danh sách registerSource (Iae92f)
  • Ý kiến phản hồi của Hội đồng API: đổi tên TransitionManager.seekTo() thành createSeekController(). Vui lòng điều chỉnh nhận xét trước đó về việc thêm TransitionManager.seekTo() vào TransitionManager.createSeekController(). (Idbeb1)
  • Thêm ExerciseRouteResult, đây không phải là lớp cha của Data, NoDataConsentRequiredStates. Thêm ExerciseRoute dưới dạng một lớp độc lập, lưu giữ dữ liệu vị trí cho tuyến đường. (I22eed)
  • Giới thiệu PagerLayoutInfo với thông tin được thu thập sau khi một lượt đo lường được truyền trong Pager. Đồng thời giới thiệu PageInfo, thông tin về một Trang được đo lường trong Pager. (Iad003, b/283098900)

Sửa lỗi

  • Chúng tôi đã cập nhật màu sắc cho Button, IconButtonTextButton cho phù hợp với thiết kế Material3. Bạn hiện có thể ghi đè vai trò ngữ nghĩa cho Button, IconButtonTextButton bằng Modifier.semantics. (Ib2495)
  • Khắc phục việc lựa chọn thẻ và chỉ báo của EmojiPickerView cập nhật sau một lần nhấp. (I4db04)
  • FileNotFoundException về việc hiển thị bộ chọn biểu tượng cảm xúc (I353e4)
  • Nắm bắt WindowManager.BadTokenException khi sử dụng EmojiPickerView (I0a144)

Phiên bản 1.4.0-beta05

Ngày 7 tháng 6 năm 2023

Phát hành androidx.emoji2:emoji2-*:1.4.0-beta05. Phiên bản 1.4.0-beta05 bao gồm các thay đổi sau.

Sửa lỗi

  • Khắc phục lỗi xuất hiện trong phiên bản 1.3 khiến MetricsAffectingSpans như RelativeSizeSpan áp dụng hai lần. Một lần trong bố cục văn bản và một lần nữa bên trong EmojiSpan.draw. Kết quả bản vẽ có kích thước không chính xác, hiển thị nếu bất kỳ tham số kích thước văn bản nào bị span thay đổi. (b/283208650)

Phiên bản 1.4.0-beta04

Ngày 24 tháng 5 năm 2023

Phát hành androidx.emoji2:emoji2-*:1.4.0-beta04. Phiên bản 1.4.0-beta04 bao gồm các thay đổi sau.

Bản phát hành này khắc phục lỗi xuất hiện kể từ phiên bản 1.0, trong đó các thành phần hiển thị có trình xử lý không phải chính sẽ gửi một ngoại lệ khi cố gắng cập nhật các span biểu tượng cảm xúc sau khi tải phông chữ xong. Không có giải pháp nào, nếu bạn bị lỗi này ảnh hưởng, vui lòng nâng cấp lên phiên bản này trở lên.

Sửa lỗi

  • Giờ đây, các lệnh gọi lại khởi tạo EmojiCompat sẽ sử dụng trình xử lý từ mỗi thành phần hiển thị, tuân theo các thành phần hiển thị không nằm trên luồng chính. (Iccbcf)

Phiên bản 1.4.0-beta03

Ngày 10 tháng 5 năm 2023

Phát hành androidx.emoji2:emoji2-*:1.4.0-beta03. Phiên bản 1.4.0-beta03 bao gồm các thay đổi sau.

Sửa lỗi

  • Khắc phục sự cố chế độ xem cửa sổ bật lên lồng nhau của bộ chọn biểu tượng cảm xúc. (0acc8e)
  • Gửi các ngoại lệ sớm trong EmojiCompat getEmojiStart/getEmojiEnd. (26177f)

Phiên bản 1.4.0-beta02

Ngày 19 tháng 4 năm 2023

Phát hành androidx.emoji2:emoji2-*:1.4.0-beta02. Phiên bản 1.4.0-beta02 bao gồm các thay đổi sau.

Sửa lỗi

  • Cập nhật tệp cơ sở tìm lỗi mã nguồn (Iaa212)

Phiên bản 1.4.0-beta01

Ngày 5 tháng 4 năm 2023

Phát hành androidx.emoji2:emoji2-*:1.4.0-beta01. Phiên bản 1.4.0-beta01 bao gồm các thay đổi sau.

Tính năng mới

androidx.emoji2:emoji2-emojipicker

Bộ chọn biểu tượng cảm xúc là một giải pháp giao diện người dùng mang đến giao diện hiện đại, biểu tượng cảm xúc mới nhất và dễ sử dụng. Người dùng có thể duyệt xem và chọn biểu tượng cảm xúc cũng như các biến thể của biểu tượng cảm xúc đó hoặc chọn trong số các biểu tượng cảm xúc mà họ đã sử dụng gần đây. Với thư viện này, các ứng dụng trên nhiều nhà sản xuất thiết bị gốc (OEM) có thể mang đến trải nghiệm biểu tượng cảm xúc toàn diện và hợp nhất cho người dùng mà nhà phát triển không cần phải tạo và duy trì bộ chọn biểu tượng cảm xúc của riêng họ từ đầu.

Biểu tượng cảm xúc mới nhất

Mỗi năm, chúng tôi đều phát hành biểu tượng cảm xúc mới và sẽ chọn lọc để đưa các biểu tượng đó vào Bộ chọn biểu tượng cảm xúc. Để đảm bảo khả năng tương thích ngược, chúng tôi thực hiện kiểm tra chính xác khả năng hiển thị biểu tượng cảm xúc nội bộ để loại bỏ tofu. Điều này sẽ đảm bảo rằng thư viện tương thích với nhiều phiên bản và thiết bị Android.

Biến thể cố định

Khi bạn nhấn và giữ một biểu tượng cảm xúc, một trình đơn gồm các biến thể sẽ xuất hiện, chẳng hạn như các giới tính hoặc màu da khác nhau. Biến thể mà bạn chọn sẽ được lưu trong bộ chọn biểu tượng cảm xúc và biến thể bạn chọn gần đây nhất sẽ được dùng trong bảng điều khiển chính. Với tính năng này, người dùng có thể gửi các biến thể biểu tượng cảm xúc mà họ muốn chỉ bằng một lần nhấn.

Biểu tượng cảm xúc gần đây

RecentEmojiProvider chịu trách nhiệm cung cấp biểu tượng cảm xúc trong danh mục "Đã dùng gần đây". Thư viện có một trình cung cấp biểu tượng cảm xúc mới nhất mặc định đáp ứng trường hợp sử dụng phổ biến nhất:

  • Tất cả biểu tượng cảm xúc đã chọn sẽ được lưu ở cấp độ từng ứng dụng trong lựa chọn ưu tiên dùng chung.
  • Bộ chọn hiển thị tối đa 3 hàng biểu tượng cảm xúc đã chọn, theo thứ tự từ mới nhất đến cũ nhất (các biểu tượng trùng lặp sẽ bị loại bỏ).

Nếu hành vi mặc định này là đủ, thì bạn không cần thiết lập phương thức setRecentEmojiProvider().

Hoạt động với EmojiCompat

Nếu ứng dụng có một thực thể EmojiCompat, thì thực thể đó sẽ được dùng trong bộ chọn biểu tượng cảm xúc để kết xuất nhiều biểu tượng cảm xúc nhất có thể. Nếu EmojiCompat bị tắt, bộ chọn biểu tượng cảm xúc vẫn hoạt động bình thường.

Cách sử dụng thư viện

Để sử dụng thư viện này, nhà phát triển ứng dụng nên

  1. Nhập androidx.emoji2:emojipicker:$version trong build.gradle.

    dependencies {
      implementation "androidx.emoji2:emojipicker:$version"
    }
    
  2. Tăng cường chế độ xem bộ chọn biểu tượng cảm xúc và đặt emojiGridRowsemojiGridColumns (không bắt buộc) dựa trên kích thước mong muốn của từng ô biểu tượng cảm xúc

    • Bạn có thể không đặt các giá trị này, mặc định là 9 emojiGridColumns, các hàng sẽ được tính toán dựa trên chiều cao thành phần hiển thị mẹ và emojiGridColumns
    • Bạn có thể đặt emojiGridRows làm số thực có độ chính xác đơn để cho biết có nhiều biểu tượng cảm xúc hơn nếu cuộn xuống trong XML
     <androidx.emoji2.emojipicker.EmojiPickerView
      android:id="@+id/emoji_picker"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      app:emojiGridColumns="9" />
    

trong mã

    val emojiPickerView = EmojiPickerView(context).apply {
        emojiGridColumns = 15
        layoutParams = ViewGroup.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.MATCH_PARENT
        )
    }
    findViewById<ViewGroup>(R.id.emoji_picker_layout).addView(emojiPickerView)
  1. Giả sử bạn muốn thêm các biểu tượng cảm xúc đã chọn vào một EditText, hãy sử dụng setOnEmojiPickedListener()

      emojiPickerView.setOnEmojiPickedListener {
          findViewById<EditText>(R.id.edit_text).append(it.emoji)
      }
    
  2. Bạn có thể đặt RecentEmojiProvider, hãy xem ứng dụng mẫu để biết ví dụ về cách triển khai.

  3. Tuỳ chọn tuỳ chỉnh kiểu. Tạo kiểu của riêng bạn để ghi đè các thuộc tính giao diện phổ biến và áp dụng kiểu đó cho EmojiPickerView. Ví dụ: việc ghi đè colorControlNormal sẽ thay đổi màu biểu tượng danh mục.

      <style name="CustomStyle" >
          <item name="colorControlNormal">#FFC0CB</item>
      </style>
      <androidx.emoji2.emojipicker.EmojiPickerView
          android:id="@+id/emoji_picker"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:theme="@style/CustomStyle"
          app:emojiGridColumns="9" />
    

Hãy xem ứng dụng mẫu để biết ví dụ về cách triển khai.

Bạn có thể xem toàn bộ nền tảng API tại đây.

Ứng dụng mẫu

Ứng dụng mẫu này minh hoạ các trường hợp sử dụng cơ bản cùng với những tình huống bổ sung sau đây:

  • Khung hiển thị đã bố cục lại vì emojiGridRowsemojiGridColumns đã được đặt lại.
  • Trình cung cấp biểu tượng cảm xúc gần đây sẽ được ghi đè để sắp xếp theo tần suất.
  • Tuỳ chỉnh kiểu.

Thay đổi về API

Thư viện Bộ chọn biểu tượng cảm xúc đã được cập nhật với các API mới sau đây:

  • Lớp EmojiPickerView cung cấp các biểu tượng cảm xúc mới nhất trong chế độ xem có thể cuộn dọc, cùng với tiêu đề ngang có thể nhấp vào.
  • Khả năng thiết lập số cột và số hàng trong lưới bộ chọn biểu tượng cảm xúc thông qua các thuộc tính XML emojiGridColumnsemojiGridRows hoặc phương thức setEmojiGridColumns()setEmojiGridRows().
  • Khả năng thiết lập trình nghe khi người dùng chọn một biểu tượng cảm xúc thông qua phương thức setOnEmojiPickedListener(). Người nghe sẽ được thông báo mỗi khi người dùng nhấp vào biểu tượng cảm xúc bất kỳ.
  • Khả năng cung cấp trình cung cấp biểu tượng cảm xúc gần đây thông qua phương thức setRecentEmojiProvider(). Đây là một hàm không bắt buộc. Nếu bạn chưa thiết lập trình cung cấp biểu tượng cảm xúc mới nhất, thì thư viện sẽ sử dụng một trình cung cấp mặc định. Hành vi mặc định được xác định như sau:
    • Tất cả biểu tượng cảm xúc đã chọn sẽ được lưu ở cấp độ từng ứng dụng trong lựa chọn ưu tiên dùng chung.
    • Bộ chọn sẽ hiển thị tối đa 3 hàng biểu tượng cảm xúc đã chọn, theo thứ tự từ mới nhất đến cũ nhất (các biểu tượng trùng lặp sẽ bị loại bỏ).
  • Lớp EmojiViewItem chứa biểu tượng cảm xúc đã hiển thị và các biến thể của biểu tượng cảm xúc đó.
  • Giao diện RecentEmojiProvider có thể được triển khai để cung cấp danh sách biểu tượng cảm xúc gần đây. recentEmojiProvider chịu trách nhiệm cung cấp biểu tượng cảm xúc trong danh mục “Đã dùng gần đây”.
  • Giao diện RecentEmojiAsyncProvider có thể được triển khai để cung cấp danh sách biểu tượng cảm xúc gần đây. RecentEmojiAsyncProvider chịu trách nhiệm cung cấp biểu tượng cảm xúc trong danh mục “Đã dùng gần đây”. Giao diện này tương đương với RecentEmojiProvider, cho phép ứng dụng ghi đè phương thức getRecentEmojiListAsync() để cung cấp biểu tượng cảm xúc gần đây.
  • Lớp RecentEmojiProviderAdapter, là trình chuyển đổi cho RecentEmojiAsyncProvider và triển khai RecentEmojiProvider.

Phiên bản 1.4.0-alpha01

Ngày 22 tháng 3 năm 2023

Phát hành androidx.emoji2:emoji2-*:1.4.0-alpha01. Phiên bản 1.4.0-alpha01 bao gồm các thay đổi sau.

Sửa lỗi

  • Khắc phục các chương trình kiểm thử, tắt các chương trình kiểm thử không ổn định và dọn dẹp.

Phiên bản 1.3

Phiên bản 1.3.0

Ngày 22 tháng 3 năm 2023

Phát hành androidx.emoji2:emoji2-*:1.3.0. Phiên bản 1.3.0 bao gồm các thay đổi sau.

Những thay đổi quan trọng kể từ phiên bản 1.2.0

  • Bản phát hành này cho phép Compose Foundation 1.4.0 trở lên để cho phép tích hợp biểu tượng cảm xúc 2.
  • API này cũng cho phép các tính năng thay thế EmojiSpans bằng mã vẽ tuỳ chỉnh, cũng như hỗ trợ các quy tắc loại trừ biểu tượng cảm xúc được xác định trên Android.

Phiên bản 1.3.0-rc01

Ngày 8 tháng 3 năm 2023

Phát hành androidx.emoji2:emoji2-*:1.3.0-rc01. Phiên bản 1.3.0-rc01 bao gồm các thay đổi sau.

Tính năng mới

  • Phiên bản này dùng để hỗ trợ tích hợp emoji2 compose.

Thay đổi về API

  • Thay thế các span (khoảng) cho mã vẽ tuỳ chỉnh.
  • Truy vấn các trường hợp loại trừ của hệ thống.

Sửa lỗi

  • Sửa lỗi các span (khoảng) nền không được áp dụng chính xác phía sau EmojiSopans.

Phiên bản 1.3.0-beta03

Ngày 23 tháng 2 năm 2023

Phát hành androidx.emoji2:emoji2-bundled:1.3.0-beta03, androidx.emoji2:emoji2-views:1.3.0-beta03androidx.emoji2:emoji2-views-helper:1.3.0-beta03.

Ngày 22 tháng 2 năm 2023

Phát hành androidx.emoji2:emoji2:1.3.0-beta03. Phiên bản 1.3.0-beta03 bao gồm các thay đổi sau.

Tính năng mới

  • Không có thay đổi nào. Bản phát hành này dùng để chuẩn bị cho quá trình tích hợp Compose.

Phiên bản 1.3.0-beta02

Ngày 8 tháng 2 năm 2023

Phát hành androidx.emoji2:emoji2-*:1.3.0-beta02. Phiên bản 1.3.0-beta02 bao gồm các thay đổi sau.

Tính năng mới

  • Bản phát hành này là bản phát hành ổn định để hỗ trợ quá trình tích hợp Compose.

Phiên bản 1.3.0-beta01

Ngày 25 tháng 1 năm 2023

Phát hành androidx.emoji2:emoji2-*:1.3.0-beta01. Phiên bản 1.3.0-beta01 bao gồm các thay đổi sau.

Tính năng mới

  • Truy vấn các trường hợp loại trừ của hệ thống.
  • Thay thế các span (khoảng) dành cho mã vẽ tuỳ chỉnh.
  • Sửa lỗi các span (khoảng) nền không được áp dụng chính xác phía sau EmojiSopans.
  • Bản phát hành này thêm các API cần thiết để hỗ trợ EmojiCompat trong Compose. Dự kiến Compose sẽ hỗ trợ khả năng tương thích với biểu tượng cảm xúc trong một bản phát hành ở tương lai gần.

Phiên bản 1.3.0-alpha01

Ngày 11 tháng 1 năm 2023

Phát hành androidx.emoji2:emoji2-*:1.3.0-alpha01. Phiên bản 1.3.0-alpha01 bao gồm các thay đổi sau.

API mới dành cho hoạt động tương tác cấp thấp

  • Truy vấn các trường hợp loại trừ của hệ thống
  • Thay thế các span (khoảng) cho mã vẽ tuỳ chỉnh
  • Sửa lỗi các span (khoảng) nền không được áp dụng chính xác phía sau EmojiSopans.
  • Bản phát hành này thêm các API cần thiết để hỗ trợ EmojiCompat trong Compose. Dự kiến Compose sẽ hỗ trợ khả năng tương thích với biểu tượng cảm xúc trong một bản phát hành ở tương lai gần.

Các thay đổi về API

  • Thêm khả năng truy vấn các trường hợp loại trừ của hệ thống vào TypefaceEmojiRasterizer. (I5653e)
  • Thêm API mới EmojiCompat.SpanFactory để thay thế hành vi EmojiSpan mặc định bằng các đoạn mã tuỳ chỉnh kích thước và bản vẽ. (Ib69d9)
  • Thêm EmojiCompat vào Compose (I96f37, b/139326806)

Sửa lỗi

  • Emoji2 giờ sẽ vẽ chính xác nền từ BackgroundSpan. (Ide6a8, b/230525134)
  • Hoàn thiện các API AppCompat cho phiên bản 1.5.0-beta01 (I2a43d, b/236866227)

Phiên bản 1.2

Phiên bản 1.2.0

Ngày 10 tháng 8 năm 2022

Phát hành androidx.emoji2:emoji2-*:1.2.0. Phiên bản 1.2.0 bao gồm các thay đổi sau.

Thay đổi quan trọng kể từ phiên bản 1.1.0

Đây là bản phát hành sửa lỗi. Không có thêm tính năng hoặc API mới nào kể từ phiên bản 1.1.0.

Tuy nhiên, các ứng dụng sử dụng PrecomputedText hoặc TextView.setText(char[]) nên ưu tiên phiên bản này.

Các lỗi sau đây đã được khắc phục:

  • Emoji2 sẽ thêm biểu tượng cảm xúc vào PrecomputedText bằng cách loại bỏ bố cục văn bản đã được tính toán trước. (I47d06, b/211231958)
  • Đưa bản sửa lỗi sự cố của Android P vào EditText, vốn được định cấu hình để sử dụng emoji2. (Ifd709, b/216891011)
  • Khắc phục sự cố khi emoji2 tải phông chữ và TextView.setText(char[]) đã được sử dụng. (Id511e, b/206859724)

Phiên bản 1.2.0-rc01

Ngày 27 tháng 7 năm 2022

Phát hành androidx.emoji2:emoji2-*:1.2.0-rc01. Phiên bản 1.2.0-rc01 bao gồm các thay đổi sau.

  • Không có thay đổi nào kể từ phiên bản thử nghiệm gần đây nhất.

Phiên bản 1.2.0-beta01

Ngày 13 tháng 7 năm 2022

Phát hành androidx.emoji2:emoji2-*:1.2.0-beta01. Phiên bản 1.2.0-beta01 bao gồm các thay đổi sau.

Tính năng mới

  • Không có thay đổi nào từ phiên bản cuối cùng (bản phát hành này hỗ trợ bản phát hành Appcompat).

Phiên bản 1.2.0-alpha04

Ngày 20 tháng 4 năm 2022

Phát hành androidx.emoji2:emoji2-*:1.2.0-alpha04. Phiên bản 1.2.0-alpha04 bao gồm các thay đổi sau.

Tính năng mới

  • Không có thay đổi nào trong bản phát hành này.

Phiên bản 1.2.0-alpha03

Ngày 6 tháng 4 năm 2022

Phát hành androidx.emoji2:emoji2-*:1.2.0-alpha03. Phiên bản 1.2.0-alpha03 bao gồm các thay đổi sau.

Tính năng mới

  • Không có thay đổi nào từ phiên bản cuối cùng (bản phát hành này hỗ trợ bản phát hành appcompat).

Phiên bản 1.2.0-alpha02

Ngày 23 tháng 3 năm 2022

Phát hành androidx.emoji2:emoji2-*:1.2.0-alpha02. Phiên bản 1.2.0-alpha02 bao gồm các thay đổi sau.

Sửa lỗi

  • Emoji2 sẽ thêm biểu tượng cảm xúc vào PrecomputedText bằng cách loại bỏ bố cục văn bản đã được tính toán trước. (I47d06, b/211231958)
  • Đưa bản sửa lỗi sự cố của Android P vào EditText, vốn được định cấu hình để sử dụng emoji2. (Ifd709, b/216891011)
  • Khắc phục sự cố khi emoji2 tải phông chữ và TextView.setText(char[]) đã được sử dụng. (Id511e, b/206859724)

Phiên bản 1.2.0-alpha01

Ngày 23 tháng 2 năm 2022

Phát hành androidx.emoji2:emoji2-*:1.2.0-alpha01. Phiên bản 1.2.0-alpha01 bao gồm các thay đổi sau.

Không có thay đổi nào kể từ phiên bản 1.1.0.

1.1

Phiên bản 1.1.0

Ngày 23 tháng 2 năm 2022

Phát hành androidx.emoji2:emoji2-*:1.1.0. Phiên bản 1.1.0 bao gồm các thay đổi sau.

Những thay đổi quan trọng kể từ phiên bản 1.0.0

  • emoji2-bundled chứa phông chữ biểu tượng cảm xúc 14
  • API getEmojiMatch mới trả về thông tin chính xác cho bàn phím để quyết định cách biểu tượng cảm xúc hiển thị khi có phông chữ EmojiCompat phía sau phông chữ hệ thống
  • Bản sửa lỗi cho NumberKeyListener giúp việc nhập chữ số sẽ lọc chính xác các ký tự.

Phiên bản 1.1.0-rc01

Ngày 9 tháng 2 năm 2022

Phát hành androidx.emoji2:emoji2-*:1.1.0-rc01. Phiên bản 1.1.0-rc01 bao gồm các thay đổi sau.

Tính năng mới

Không có thay đổi nào so với bản thử nghiệm.

Các tính năng mới so với emoji2 1.0.0:

  • emoji2-bundled chứa phông chữ biểu tượng cảm xúc 14
  • API getEmojiMatch mới trả về thông tin chính xác cho bàn phím để quyết định cách biểu tượng cảm xúc hiển thị khi có phông chữ EmojiCompat phía sau phông chữ hệ thống
  • Bản sửa lỗi cho NumberKeyListener giúp việc nhập chữ số sẽ lọc chính xác các ký tự

Phiên bản 1.1.0-beta01

Ngày 26 tháng 1 năm 2022

Phát hành androidx.emoji2:emoji2-*:1.1.0-beta01. Phiên bản 1.1.0-beta01 bao gồm các thay đổi sau.

Sửa lỗi

  • Bản phát hành androidx-emoji2 beta01. Không có thay đổi nào so với phiên bản alpha01 (Ic61d9)

Phiên bản 1.1.0-alpha01

Ngày 15 tháng 12 năm 2021

Phát hành androidx.emoji2:emoji2-*:1.1.0-alpha01. Phiên bản 1.1.0-alpha01 bao gồm các thay đổi sau.

Tính năng mới

  • emoji2-bundled chứa phông chữ biểu tượng cảm xúc 14
  • API getEmojiMatch mới trả về thông tin chính xác cho bàn phím để quyết định cách biểu tượng cảm xúc hiển thị khi có phông chữ EmojiCompat phía sau phông chữ hệ thống
  • Bản sửa lỗi cho NumberKeyListener giúp việc nhập chữ số sẽ lọc chính xác các ký tự

Các thay đổi về API

  • Thêm getEmojiMatch API mới để cho phép bàn phím tra cứu hành vi của biểu tượng cảm xúc một cách chính xác hơn trong EmojiCompat.
  • Không dùng hasEmojiGlyph nữa vì giá trị boolean của thuộc tính này không chính xác khi thử nghiệm với phông chữ cũ hơn so với phông chữ của biểu tượng cảm xúc. Thay thế bằng getEmojiMatch. (Ie693d)

Sửa lỗi

  • Emoji2 sẽ không bao bọc các bản sao của NumberKeyListener, cho phép TextView định cấu hình ngôn ngữ.
  • Appcompat sẽ không bọc các bản sao của NumberKeyListener được truyền vào setKeyListener, cho phép TextView định cấu hình chính xác ngôn ngữ trên NumberKeyListeners. (Ibf113, b/207119921)

1.0

Phiên bản 1.0.1

Ngày 15 tháng 12 năm 2021

Phát hành androidx.emoji2:emoji2-*:1.0.1. Phiên bản 1.0.1 bao gồm các thay đổi sau.

Sửa lỗi

  • Emoji2 sẽ không bọc các bản sao của NumberKeyListener, cho phép TextView định cấu hình chính xác ngôn ngữ.
  • Appcompat sẽ không bọc các bản sao của NumberKeyListener được truyền vào setKeyListener, cho phép TextView định cấu hình chính xác ngôn ngữ trên NumberKeyListeners. (Ibf113, b/207119921)

Phiên bản 1.0.0

Ngày 17 tháng 11 năm 2021

Phát hành androidx.emoji2:emoji2-*:1.0.0. Phiên bản 1.0.0 bao gồm các thay đổi sau.

Các tính năng chính của phiên bản 1.0.0

androidx.emoji2 thay thế androidx.emoji với các tính năng bổ sung:

  • Giảm kích thước APK so với androidx.emoji
  • Định cấu hình tự động
  • Đã thêm dưới dạng phần phụ thuộc cho Appcompat 1.4

Để biết thêm thông tin về androidx.emoji2, hãy xem phần Hỗ trợ biểu tượng cảm xúc hiện đại và buổi trò chuyện trong Hội nghị Nhà phát triển Android về việc Hiển thị TẤT CẢ biểu tượng cảm xúc trong Android Dev cho ứng dụng.

Phiên bản 1.0.0-rc01

Ngày 27 tháng 10 năm 2021

Phát hành androidx.emoji2:emoji2-*:1.0.0-rc01. Phiên bản 1.0.0-rc01 bao gồm các thay đổi sau.

  • Không có thay đổi nào kể từ phiên bản beta02.

Emoji2 Phiên bản 1.0.0-beta01

Ngày 15 tháng 9 năm 2021

Phát hành androidx.emoji2:emoji2-*:1.0.0-beta01. Phiên bản 1.0.0-beta01 bao gồm các thay đổi sau.

Các thay đổi về API

  • Đã thêm setLoadingExecutor vào FontRequestEmojiCompatConfig, thay thế API trước đó của setHandler. API này cho phép các ứng dụng định cấu hình FontRequestEmojiCompatConfig để sử dụng mọi trình thực thi trong nền.

    Thay đổi này là một thay đổi có thể gây lỗi từ androidx.emoji:emoji, do đó, setHandler sẽ được giữ lại dưới dạng một API không dùng nữa, không hoạt động để hỗ trợ quá trình di chuyển. (I6cd48)

  • EmojiCompat thiết lập chính xác EditorInfo.extras trên Android 11

    • Các tiện ích tuỳ chỉnh sử dụng IME không phân lớp con EditText có thể gọi EmojiCompat.updateEditorInfo để thông báo cho IME biết rằng các tiện ích đó hỗ trợ quá trình xử lý EmojiCompat. (I1ea9b)

Sửa lỗi

  • Sửa DefaultEmojiCompatConfig để tra cứu chính xác nhà cung cấp phông chữ biểu tượng cảm xúc trên API 19 và 28. Thao tác này sửa một lỗi xuất hiện trong emoji2 1.0.0-alpha01. (Ib33d8, b/197906329)

Phiên bản 1.0.0-alpha03

Ngày 30 tháng 6 năm 2021

Phát hành androidx.emoji2:emoji2-*:1.0.0-alpha03. Phiên bản 1.0.0-alpha03 bao gồm các thay đổi sau.

Tính năng mới

Bản phát hành này đã sửa nhiều lỗi và là bản phát hành ổn định.

  1. EmojiEditTextHelper hiện cho phép chuyển null dưới dạng KeyListener. Việc này cho phép hoạt động của nền tảng cho phép áp dụng giá trị rỗng cho các biểu tượng cảm xúc hỗ trợ việc triển khai EditText.
  2. Khi sử dụng EmojiCompatInitializer, độ trễ khởi động ban đầu sẽ được cải thiện để kích hoạt sau khi Hoạt động đầu tiên tiếp tục. Việc này cho phép quá trình khởi động ứng dụng diễn ra không thường xuyên và tránh tải phông chữ cho quá trình khởi động ứng dụng mà không bao giờ hiển thị giao diện người dùng. Sau một khoảng thời gian ngắn, EmojiCompat sẽ tạo một chuỗi để tải phông chữ biểu tượng cảm xúc.
  • Phần phụ thuộc mới trên androidx.lifecycle:lifecycle-process từ androidx.emoji2:emoji2 được thêm vào để triển khai độ trễ. Thay đổi này sẽ tác động không đáng kể đến kích thước APK cho các ứng dụng đã bao gồm vòng đời (chẳng hạn như các ứng dụng có Appcompat).

Các thay đổi về API

  • Cho phép null KeyListener trong AppCompatEditText. Thao tác này đảo ngược chú thích không rỗng đã được thêm vào AppCompatEditText trong phiên bản 1.4.0-alpha01 và khôi phục hành vi trước đó (được chuyển rỗng). (I21482, b/189559345)

Sửa lỗi

  • Thay đổi EmojiCompatInitializer để trì hoãn việc tải phông chữ cho đến 500 mili giây sau Activity.onResume đầu tiên. Cách này cho phép một hoạt động thực hiện Application.onCreateActivity.onCreate không cạnh tranh, trong khi vẫn đảm bảo rằng phông chữ biểu tượng cảm xúc được tải ngay sau khi khởi động ứng dụng. (I4bff7)

Phiên bản 1.0.0-alpha02

Ngày 2 tháng 6 năm 2021

Phát hành androidx.emoji2:emoji2:1.0.0-alpha02, androidx.emoji2:emoji2-views:1.0.0-alpha02androidx.emoji2:emoji2-views-helper:1.0.0-alpha02. Phiên bản 1.0.0-alpha02 bao gồm các thay đổi sau.

Các thay đổi về API

  • Đổi tên gói trong emoji2-views-helper thành androidx.emoji2.viewsintegration. Đây là một thay đổi có thể gây lỗi cho AppCompat 1.4.0-alpha01 và các ứng dụng phải đảm bảo cập nhật phần phụ thuộc AppCompat để sử dụng phiên bản emoji2 mới. (Ie8397)

Phiên bản 1.0.0-alpha01

Ngày 18 tháng 5 năm 2021

Phát hành androidx.emoji2:emoji2:1.0.0-alpha01, androidx.emoji2:emoji2-views:1.0.0-alpha01androidx.emoji2:emoji2-views-helper:1.0.0-alpha01. Phiên bản 1.0.0-alpha01 bao gồm các thay đổi sau.

Các tính năng trong bản phát hành đầu tiên này

Bạn nên tích hợp EmojiCompat cho tất cả ứng dụng để hỗ trợ biểu tượng cảm xúc hiện đại trong API19. Tất cả nội dung do người dùng tạo trong ứng dụng của bạn đều chứa 🎉.

EmojiCompat đã chuyển từ cấu phần phần mềm androidx.emoji sang androidx.emoji2 mới, hiện ở giai đoạn alpha01. Các cấu phần phần mềm mới thay thế cho phiên bản trước.

emoji2 được thêm dưới dạng phần phụ thuộc cho AppCompat, bắt đầu từ AppCompat 1.4.0-alpha01 và được bật theo mặc định cho các chế độ xem AppCompat.

Cấu phần phần mềm emoji2 sử dụng thư viện androidx.startup để tạo cấu hình tự động mới. Bạn không cần phải viết bất kỳ mã 👨🏽‍💻 nào để hiển thị 🐻‍❄️ nữa.

Thay đổi của emoji2 so với emoji

  • Đã thêm chế độ cấu hình tự động mới EmojiCompatInitializer bằng androidx.startup.
  • Đã thêm chế độ cấu hình mặc định mới sử dụng vị trí dịch vụ để tìm nhà cung cấp phông chữ có thể tải xuống trong DefaultEmojiCompatConfiguration.
  • Di chuyển lớp từ gói androidx.emoji sang androidx.emoji2.
  • Tách EmojiTextView và các chế độ xem có liên quan thành một cấu phần phần mềm emoji2-views riêng. Bạn chỉ nên sử dụng cách này nếu ứng dụng của bạn không dùng Appcompat.
  • Các trình trợ giúp được trích xuất để tích hợp emojicompat vào chế độ xem tuỳ chỉnh vào một cấu phần phần mềm emoji2-views-helper riêng biệt.
  • Đã thêm chú thích về giá trị rỗng.
  • Giờ đây, bạn có thể sử dụng tính năng trợ giúp trong emoji2-views-helper ngay cả khi bạn chưa khởi chạy EmojiCompat (trước đây, hành động này gửi một trường hợp ngoại lệ).

Bạn nên thêm phần phụ thuộc nào?

  • Các ứng dụng có AppCompat nên nâng cấp lên phiên bản AppCompat 1.4.0-alpha01 trở lên.
  • Các ứng dụng không có AppCompat sử dụng TextView/EditText từ nền tảng sẽ sử dụng EmojiTextView và các lớp liên quan trong emoji2-views.

Cách hỗ trợ trong chế độ xem tuỳ chỉnh

  • Các ứng dụng có AppCompat nên mở rộng AppCompatTextView, AppCompatButton, v.v. thay vì nền tảng TextView, v.v.
  • Các ứng dụng không có AppCompat nên thêm phần phụ thuộc androidx.emoji2:emoji2-views-helper và sử dụng trình trợ giúp để tích hợp với các lớp con TextView hoặc EditText tuỳ chỉnh.

Định cấu hình khởi chạy tự động

  • Các ứng dụng có thể tắt tuỳ chọn khởi chạy tự động bằng cách thêm nội dung này vào tệp kê khai:

     <provider
         android:name="androidx.startup.InitializationProvider"
         android:authorities="${applicationId}.androidx-startup"
         android:exported="false"
         tools:node="merge">
         <meta-data android:name="androidx.emoji2.text.EmojiCompatInitializer"
                   tools:node="remove" />
     </provider>
    
  • Thao tác này sẽ tắt chế độ cấu hình tự động, sau đó bạn có thể chuyển cấu hình tuỳ chỉnh đến EmojiCompat.init. Bạn có thể truy xuất DefaultEmojiCompatConfig.create(context) cho cấu hình mặc định của hệ thống để định cấu hình thêm trước khi chuyển vào EmojiCompat.init.