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 13 tháng 12 năm 2023 1.4.0 - - 1.5.0-alpha01

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.4.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.4.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.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 triệu.

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-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 để hỗ trợ Biểu tượng cảm xúc 15.1.

Các thay đổi về API

  • Thêm các executor để kiểm soát luồng callback cho InitCallback. (I32b67)
  • BundledEmojiCompatConfig hiện lấy trình thực thi để kiểm soát việc tải các luồng. (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.

Các thay đổi về API

  • Giới thiệu danh sách registerSource (Iae92f)
  • 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 cấp cao của Data, NoDataConsentRequiredStates. Thêm ExerciseRoute dưới dạng một lớp độc lập, lớp này lưu giữ dữ liệu vị trí cho tuyến đường. (Người dùng)
  • Ra mắt PagerLayoutInfo với thông tin được thu thập sau khi lượt đo lường đạt trong Trình chuyển trang. Đồng thời cũng 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 phù hợp với thiết kế Material3. Giờ đây, bạn có thể ghi đè vai trò ngữ nghĩa của Button, IconButtonTextButton bằng Modifier.semantics. (Ib2495)
  • Sửa lựa chọn thẻ và cập nhật chỉ báo của EmojiPickerView sau một cú nhấp chuột. (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 được giới thiệu trong phiên bản 1.3 có thể khiến các MetricsAffectingSpans như RelativeSizeSpan áp dụng hai lần. Một lần trong khi bố cục văn bản và một lần nữa bên trong EmojiSpan.draw. Kết quả là bản vẽ có kích thước không chính xác, hiển thị nếu có bất kỳ tham số kích thước văn bản nào bị thay đổi theo span. (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 sửa một lỗi hiện có kể từ phiên bản 1.0, trong đó các chế độ xem có trình xử lý không phải trình xử lý chính sẽ gửi một ngoại lệ khi cố gắng cập nhật các khoảng biểu tượng cảm xúc sau khi tải phông chữ hoàn tất. Không có cách giải quyết. Nếu lỗi này ảnh hưởng đến bạn, vui lòng nâng cấp lên phiên bản này hoặc phiên bản mới hơn.

Sửa lỗi

  • Giờ đây, các lệnh gọi lại init EmojiCompat sẽ sử dụng trình xử lý từ mỗi khung hiển thị, tôn trọng các khung hiển thị không có 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ố xảy ra với khung hiển thị cửa sổ bật lên lồng bộ chọn biểu tượng cảm xúc. (0acc8e)
  • Gửi các ngoại lệ ban đầu 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 trên 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 qua 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 đó, hoặc chọn trong số các biểu tượng cảm xúc đã sử dụng gần đây. Nhờ thư viện này, các ứng dụng thuộc nhiều OEM (Nhà sản xuất thiết bị gốc) có thể mang đến cho người dùng trải nghiệm biểu tượng cảm xúc hợp nhất và toàn diện, mà không cần nhà phát triể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

Các biểu tượng cảm xúc mới được phát hành mỗi năm và chúng tôi sẽ đưa các biểu tượng cảm xúc đó vào Bộ chọn biểu tượng cảm xúc một cách có chọn lọc. Để đảm bảo khả năng tương thích ngược, chúng tôi sẽ kiểm tra chính xác khả năng hiển thị biểu tượng cảm xúc trong nội bộ để loại bỏ đậu phụ. Việc này sẽ đảm bảo rằng thư viện này tương thích trên 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 nhiều biến thể biểu tượng cảm xúc 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ể 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 sử dụng trong bảng điều khiển chính. Nhờ tính năng này, người dùng có thể gửi các phiên bản biểu tượng cảm xúc 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 này có một trình cung cấp biểu tượng cảm xúc mặc định mới đây đá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 đều được lưu ở cấp độ từng ứng dụng trong lựa chọn ưu tiên dùng chung.
  • Bộ chọn cho thấy 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 đặt phương thức setRecentEmojiProvider().

Làm việc với EmojiCompat

Nếu ứng dụng có thực thể EmojiCompat, ứng dụng này sẽ được dùng trong bộ chọn biểu tượng cảm xúc để hiển thị nhiều biểu tượng cảm xúc nhất có thể. Nếu bạn tắt EmojiCompat, bộ chọn biểu tượng cảm xúc vẫn sẽ 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 phải

  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à thiết lập emojiGridRowsemojiGridColumns (không bắt buộc) dựa trên kích thước mong muốn của mỗi ô biểu tượng cảm xúc

    • Bạn có thể không đặt các mục này. Giá trị mặc định là 9 emojiGridColumns, các hàng sẽ được tính toán dựa trên chiều cao của chế độ xem gốc và emojiGridColumns
    • Bạn có thể đặt emojiGridRows dưới dạng số thực để 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 biểu tượng cảm xúc đã chọn vào EditText, hãy sử dụng setOnEmojiPickedListener()

      emojiPickerView.setOnEmojiPickedListener {
          findViewById<EditText>(R.id.edit_text).append(it.emoji)
      }
    
  2. Đặt RecentEmojiProvider (không bắt buộc), hãy xem ứng dụng mẫu để biết cách triển khai mẫu.

  3. Tuỳ chỉnh kiểu nếu muốn. 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" />
    

Xem ứng dụng mẫu để biết cách triển khai mẫu.

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 các trường hợp bổ sung sau đây:

  • Khung hiển thị được 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ẽ bị ghi đè để sắp xếp theo tần suất.
  • Tuỳ chỉnh kiểu.

Các 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à 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().
  • Có thể thiết lập trình nghe biểu tượng cảm xúc được chọn thông qua phương thức setOnEmojiPickedListener(). Trình nghe sẽ được thông báo mỗi khi người dùng nhấp vào một biểu tượng cảm xúc bất kỳ.
  • Khả năng cung cấp một 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 bạn 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à đối tượng 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 kiểm thử, tắt 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 hỗ trợ tích hợp emoji2.
  • Thư viện này cũng hỗ trợ các tính năng thay thế EmojiSpans bằng mã vẽ tuỳ chỉnh, cũng như hỗ trợ cá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 hỗ trợ tính năng tích hợp Compose emoji2.

Các thay đổi về API

  • Thay thế 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ữ biểu tượng cảm xúc của nền tảng. 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.