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 10 tháng 7 năm 2024 1.4.0 - 1.5.0-beta01 -

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á tài nguyên không cần thiết và giảm kích thước thư viện khoảng 0,3M.

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-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 lựa chọn biểu tượng cảm xúc hai chiều.
  • Hỗ trợ thiết kế lại lựa chọn đa giao diện.

Sửa lỗi

  • Chỉ báo và lựa chọn thẻ của EmojiPickerView sẽ được cập nhật chậm hơn một lần nhấp. (146b02, b/288261054)
  • Lựa chọn thẻ và chỉ báo của EmojiPickerView bị lỗi. (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.

Các thay đổi về API

  • Thêm bộ thực thi để kiểm soát luồng gọi lại cho InitCallback. (I32b67)
  • BundledEmojiCompatConfig hiện sẽ đưa một 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

  • Ra mắt 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, 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í của tuyến đường. (I22eed)
  • Ra mắt PagerLayoutInfo với thông tin được thu thập sau lượt đo lường trong Trình chuyển trang. Cũng được giới thiệu PageInfo, thông tin về một Trang được đo lường trong Trình chuyển trang. (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 cho Button, IconButtonTextButton bằng Modifier.semantics. (Ib2495)
  • Sửa lỗi cập nhật chỉ báo và chọn thẻ của EmojiPickerView sau một lượt nhấp. (I4db04)
  • FileNotFoundException khi hiện bộ chọn biểu tượng cảm xúc (I353e4)
  • 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 các MetricsAffectingSpans (chẳng hạn như RelativeSizeSpan) áp dụng 2 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 sửa một lỗi kể từ phiên bản 1.0, trong đó các khung hiển thị 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 nào để giải quyết vấn đề. 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 cao 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ố thành phần hiển thị cửa sổ bật lên lồng trong 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 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 OEM (Nhà sản xuất thiết bị gốc) có thể mang đến cho người dùng trải nghiệm thống nhất và đa dạng về biểu tượng cảm xúc mà không cần nhà phát triển phải xây dựng 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 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 thực hiện quy trình 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ụ. Điều này sẽ đảm bảo 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 nhấn và giữ một biểu tượng cảm xúc, bạn sẽ thấy một trình đơn gồm nhiều biến thể, chẳng hạn như nhiều giới tính hoặc màu da. 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 này 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 chung.
  • Bộ chọn hiển thị tối đa 3 hàng biểu tượng cảm xúc đã chọn (đã loại bỏ trùng lặp) theo trình tự thời gian đảo ngược.

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

Sử dụng EmojiCompat

Nếu có một thực thể EmojiCompat, thì ứng dụng 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 bạn tắt EmojiCompat, bộ chọn biểu tượng cảm xúc vẫn sẽ hoạt độ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 cột 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 khung hiển thị gốc và emojiGridColumns
    • Bạn có thể đặt emojiGridRows làm số thực dấu phẩy động để 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 (không bắt buộc), hãy xem ứng dụng mẫu để tham khảo 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 chung và áp dụng kiểu cho EmojiPickerView. Ví dụ: việc ghi đè colorControlNormal sẽ làm 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 để tham khảo ví dụ về cách triển khai.

Bạn có thể xem toàn bộ khu vực 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 trường hợp 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ẽ 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 theo chiều dọc với một tiêu đề ngang có thể nhấp vào.
  • Có thể đặt số lượng 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 đã chọn 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 không đặt trình cung cấp biểu tượng cảm xúc gần đây, thì thư viện sẽ sử dụng trình cung cấp biểu tượng cảm xúc gần đây 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 độ mỗi ứng dụng trong lựa chọn ưu tiên chung.
    • Bộ chọn sẽ hiển thị tối đa 3 hàng biểu tượng cảm xúc đã chọn (đã loại bỏ trùng lặp) theo trình tự thời gian ngược.
  • Lớp EmojiViewItem chứa biểu tượng cảm xúc đã hiển thị và các biến thể biểu tượng cảm xúc tương ứng.
  • 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

  • Sửa lỗi kiểm thử, tắt quy trình kiểm thử flake 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 Emoji2.
  • 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 nhằm hỗ trợ tính năng tích hợp Compose Emoji2.

Các thay đổi về API

  • Thay thế span 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 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 gói 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.