표준 이모티콘 세트는 매년 새롭게 업데이트되는 유니코드, 이모티콘 사용 증가 빠르게 확장할 수 있습니다
앱이 인터넷 콘텐츠를 표시하거나 텍스트 입력을 제공하는 경우 Google은 최신 그림 이모티콘 글꼴을 지원할 것을 권장합니다. 그렇지 않으면 나중에 표시되는 그림 이모티콘이 두부 (☐)라는 작은 정사각형 상자로 표시되거나 잘못 렌더링된 기타 이모티콘 시퀀스입니다.
Android 버전 11 (API 수준 30) 이하에서는 그림 이모티콘 글꼴을 업데이트할 수 없으므로 해당 버전에 새 버전을 표시하는 앱은 수동으로 업데이트해야 합니다.
다음은 최신 그림 이모티콘의 예입니다.
예 | 버전 |
---|---|
🫠 🫱🏼🫲🏿 🫰🏽 | 14.0(2021년 9월) |
😶🌫️ 🧔🏻♀️ 🧑🏿❤️🧑🏾 | 13.1(2020년 9월) |
🥲 🥷🏿 🐻❄️ | 13.0(2020년 3월) |
🧑🏻🦰 🧑🏿🦯 👩🏻🤝👩🏼 | 12.1(2019년 10월) |
🦩 🦻🏿 👩🏼🤝👩🏻 | 12.0(2019년 2월) |
androidx.emoji2:emoji2
라이브러리는 더 간단한 방식으로 이전 Android 버전과의 하위 호환성을 제공합니다. emoji2
라이브러리는
AppCompat
라이브러리가 필요하며
추가 구성이 작동하도록 할 수 있습니다
Compose에서 그림 이모티콘 지원
2023년 3월 BOM (Compose UI 1.4)에서 최신 그림 이모티콘 지원 제공 이전 Android 버전과의 호환성( API 21. 이 페이지에서는 뷰 시스템에서 최신 그림 이모티콘을 구성하는 방법을 설명합니다. 자세한 내용은 자세한 내용은 편지쓰기의 그림 이모티콘 페이지를 참고하세요.
기본 요건
앱이 최신 그림 이모티콘을 제대로 표시하는지 확인하려면 기기에서 앱을 실행하세요. (Android 10(API 수준 29) 이하 실행) 이 페이지에는 내가 사용하는 최신 그림 이모티콘이 포함되어 있습니다. 테스트용으로 표시할 수 있습니다.
AppCompat를 사용하여 최신 그림 이모티콘 지원
AppCompat
1.4에서는 그림 이모티콘이 지원됩니다.
AppCompat
를 사용하여 그림 이모티콘을 지원하려면 다음 단계를 따르세요.
모듈이
AppCompat
라이브러리 버전 1.4.0-alpha01 이상에 종속되는지 확인합니다.build.gradle // Ensure version is 1.4.0-alpha01 or higher. implementation "androidx.appcompat:appcompat.$appcompatVersion"
텍스트를 표시하는 모든 활동이
AppCompatActivity
클래스를 확장하는지 확인합니다.Kotlin
MyActivity.kt class MyActivity: AppCompatActivity { ... }
자바
MyActivity.java class MyActivity extends AppCompatActivity { ... }
Android 10을 실행하는 기기에서 앱을 실행하여 통합을 테스트합니다. 다음 테스트 문자열을 표시합니다. 모든 문자가 올바르게 렌더링됩니다.
- 14.0: 🫠, 🫱🏼🫲🏿, 🫰🏽
- 13.1: 😶🌫️, 🧔🏻♀️, 🧑🏿❤️🧑🏾
- 13.0: 🥲, 🥷🏿, 🐻❄️
- 12.1: 🧑🏻🦰, 🧑🏿🦯, 👩🏻🤝👩🏼
- 12.0: 🦩, 🦻🏿, 👩🏼🤝👩🏻
앱은 이전 버전과 호환되는 이모티콘을 자동으로 표시하고
기기와 같은 emoji2
호환 다운로드 가능한 글꼴 제공자 제공
Google Play 서비스에서 제공합니다.
앱에서 AppCompat를 사용하지만 두부(☐)를 표시하는 경우
앱이 적절한 이모티콘 대신 두부를 표시할 수도 있습니다.
AppCompat
라이브러리를 추가합니다. 다음은 가능한 설명과
솔루션을 제공합니다
최근에 플래시한 기기나 새 에뮬레이터에서 앱을 실행 중입니다.
앱의 Google Play 서비스 데이터를 지워서 글꼴 캐시나 발생할 수 있습니다. 이렇게 하면 일반적으로 몇 시간 후에 문제가 해결됩니다.
앱 데이터를 삭제하려면 다음 단계를 따르세요.
Android 지원 기기에서 설정을 엽니다.
앱 및 알림을 탭합니다.
모든 앱 보기 또는 앱 정보를 탭합니다.
앱을 스크롤하여 Google Play 서비스를 탭합니다.
저장용량 및 캐시를 탭합니다.
캐시 지우기를 탭합니다.
앱에서 AppCompat 텍스트 관련 클래스를 사용하지 않음
이는 AppCompatActivity
를 확장하지 않거나
코드 내 뷰(예: TextView
) 다음 사항을 확인하세요.
- 활동이
AppCompatActivity
를 확장합니다. - 코드에서 뷰를 만드는 경우 올바른
AppCompat
를 사용합니다. 서브클래스를 사용합니다.
AppCompatActivity
는 XML을 확장할 때 TextView
대신 AppCompatTextView
를 자동으로 확장하므로 XML을 업데이트할 필요가 없습니다.
테스트 전화에서 다운로드 가능한 글꼴을 지원하지 않음
DefaultEmojiCompatConfig.create
가 null이 아닌 구성을 반환하는지 확인합니다.
이전 API 수준의 에뮬레이터가 Google Play 서비스를 업그레이드하지 않음
이전 API 레벨에서 에뮬레이터를 사용하는 경우
글꼴 제공업체를 찾기 위해 emoji2
용 번들 Google Play 서비스를 사용합니다. 이렇게 하려면
에뮬레이터에서 Google Play 스토어에 로그인합니다.
호환되는 버전이 설치되었는지 확인하려면 다음 단계를 따르세요.
다음 명령어를 실행합니다.
adb shell dumpsys package com.google.android.gms | grep version
versionCode
가211200000
보다 높은지 확인합니다.
AppCompat 없이 그림 이모티콘 지원
앱이 AppCompat
를 포함할 수 없다면 emoji2
를 직접 사용할 수 있습니다. 이
더 많은 작업이 필요하므로 앱에서 AppCompat
를 사용할 수 없는 경우에만 이 메서드를 사용하세요.
AppCompat
라이브러리 없이 그림 이모티콘을 지원하려면 다음 단계를 따르세요.
앱의
build.gradle
파일에emoji2
및emoji2-views
를 포함합니다.build.gradle def emojiVersion = "1.0.0-alpha03" implementation "androidx.emoji2:emoji2:$emojiVersion" implementation "androidx.emoji2:emoji2-views:$emojiVersion"
emoji2-views
모듈은 서브클래스 다음을 구현하는TextView
,Button
,EditText
EmojiCompat
: 사용하지 않음AppCompat
가 포함된 앱에서 이미 구현되고 있으므로EmojiCompat
입니다.XML 및 코드에서
TextView
,EditText
또는Button
—사용EmojiTextView
,EmojiEditText
또는 대신EmojiButton
을(를) 사용하세요.activity_main.xml <androidx.emoji2.widget.EmojiTextView ... /> <androidx.emoji2.widget.EmojiEditText ... /> <androidx.emoji2.widget.EmojiButton ... />
emoji2
모듈을 포함하면 시스템은 다운로드 가능한 기본 모듈을 사용합니다. 그림 이모티콘 글꼴을 로드하는 글꼴 제공자 자동으로 실행됩니다. 아니요 추가 구성이 필요합니다통합을 테스트하려면 Android 11을 실행하는 기기에서 앱을 실행하거나 다음 테스트 문자열을 표시합니다. 모든 문자가 올바르게 렌더링됩니다.
- 14.0: 🫠, 🫱🏼🫲🏿, 🫰🏽
- 13.1: 😶🌫️, 🧔🏻♀️, 🧑🏿❤️🧑🏾
- 13.0: 🥲, 🥷🏿, 🐻❄️
- 12.1: 🧑🏻🦰, 🧑🏿🦯, 👩🏻🤝👩🏼
- 12.0: 🦩, 🦻🏿, 👩🏼🤝👩🏻
위젯 없이 EmojiCompat 사용
EmojiCompat
는 다음 용도로 EmojiSpan
를 사용합니다.
올바른 이미지를 렌더링할 수 있습니다. 따라서 주어진 입력 값을
CharSequence
객체를
EmojiSpan
객체가 있는 Spanned
객체
EmojiCompat 클래스는 CharSequences
를 Spanned
인스턴스로 변환하는 process()
메서드를 제공합니다. 이 메서드를 사용하여 process()
결과를 캐시하여 앱 성능을 개선할 수 있습니다.
Kotlin
val processed = EmojiCompat.get().process("neutral face \uD83D\uDE10")
자바
CharSequence processed = EmojiCompat.get().process("neutral face \uD83D\uDE10");
입력 방식 편집기(IME)에 EmojiCompat 사용
EmojiCompat
클래스를 사용하면 키보드가 앱에서 지원하는 이모티콘을 렌더링할 수 있습니다.
어떤 방식으로 상호작용하는지
확인할 수 있습니다 입력 방식 편집기(IME)
(IME)는
getEmojiMatch()
메서드를 사용하여 EmojiCompat
의 인스턴스가 기본 스레드를 렌더링할 수 있는지
있습니다. 이 메서드는 CharSequence
를 사용합니다.
그림 이모티콘의 역할을 하며, EmojiCompat
가 그림 이모티콘을 감지하고 렌더링할 수 있는 경우 true
를 반환합니다.
또한 키보드는 앱에서 지원하는 EmojiCompat
버전을 확인하여 팔레트에서 렌더링할 그림 이모티콘을 결정할 수도 있습니다. 사용 가능한 버전이 있어 버전을 확인하기 위해 키보드는 EditorInfo.extras
번들에 다음 키가 있는지 확인할 수 있습니다.
EDITOR_INFO_METAVERSION_KEY
: 앱이 사용하는 그림 이모티콘 메타데이터의 버전을 나타냅니다. 이 키가 없으면 앱은EmojiCompat
를 사용하지 않는 것입니다.EDITOR_INFO_REPLACE_ALL_KEY
: 키가 존재하고true
로 설정된 경우 앱은EmojiCompat
: 시스템에 있는 그림 이모티콘을 포함한 모든 그림 이모티콘을 대체합니다.
EmojiCompat 인스턴스를 구성하는 방법을 자세히 알아보세요.
맞춤 뷰에서 그림 이모티콘 사용
앱에 다음과 같은 맞춤 뷰가 있는 경우
TextView
의 직접 또는 간접 서브클래스(예: Button
,
Switch
또는 EditText
)을 사용하며 이러한 뷰는 사용자가 생성한 콘텐츠를 표시할 수 있습니다.
콘텐츠의 경우 각 광고가
EmojiCompat
:
프로세스는 앱에서 AppCompat
라이브러리를 사용하는지에 따라 다릅니다.
AppCompat를 사용하는 앱에 맞춤 뷰 추가
앱에서 AppCompat
를 사용하는 경우 대신 AppCompat
구현을 확장합니다.
플랫폼 구현입니다. 다음 표를 가이드로 사용하여
다음과 같이 AppCompat
에서 뷰를 확장합니다.
다음을 확장하는 대신 | 다음을 확장 |
---|---|
TextView
|
AppCompatTextView
|
EditText
|
AppCompatEditText
|
ToggleButton
|
AppCompatToggleButton
|
Switch
|
SwitchCompat
|
Button
|
AppCompatButton
|
CheckedTextView
|
AppCompatCheckedTextView
|
RadioButton
|
AppCompatRadioButton
|
CheckBox
|
AppCompatCheckBox
|
AutoCompleteTextView
|
AppCompatAutoCompleteTextView
|
MultiAutoCompleteTextView
|
AppCompatMultiAutoCompleteTextView
|
AppCompat를 사용하지 않는 앱에 맞춤 뷰 추가
앱에서 AppCompat
를 사용하지 않는다면 맞춤 뷰에 사용하도록 설계된 뷰 통합 도우미를 emoji2-views-helper
모듈에 사용합니다. AppCompat
라이브러리가 그림 이모티콘 지원을 구현하는 데 사용하는 도우미입니다.
AppCompat
를 사용하지 않는 앱에 맞춤 뷰를 지원하려면 다음 단계를 완료합니다.
emoji2-views-helper
라이브러리를 추가합니다.implementation "androidx.emoji2:emoji2-views-helper:$emojiVersion"
안내에 따라
EmojiTextViewHelper
드림 또는EmojiEditTextHelper
할 수 있습니다.Android 10을 실행하는 기기에서 앱을 실행하여 통합을 테스트합니다. 다음 테스트 문자열을 표시합니다. 모든 문자가 올바르게 렌더링됩니다.
- 14.0: 🫠, 🫱🏼🫲🏿, 🫰🏽
- 13.1: 😶🌫️, 🧔🏻♀️, 🧑🏿❤️🧑🏾
- 13.0: 🥲, 🥷🏿, 🐻❄️
- 12.1: 🧑🏻🦰, 🧑🏿🦯, 👩🏻🤝👩🏼
- 12.0: 🦩, 🦻🏿, 👩🏼🤝👩🏻
emoji2 처리를 위한 선택적 기능
앱에 emoji2
라이브러리를 포함한 후 선택적
몇 가지 기능을 살펴보겠습니다
다른 글꼴 또는 다운로드 가능한 글꼴 제공자를 사용하도록 emoji2 구성
다른 글꼴 또는 다운로드 가능한 글꼴 제공자를 사용하도록 emoji2
를 구성하려면 다음을 진행합니다.
사용 중지
EmojiCompatInitializer
드림 매니페스트에 다음을 추가하면 됩니다.<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>
다음 중 한 가지 방법을 사용합니다.
다음을 호출하여 기본 구성 사용:
DefaultEmojiCompatConfiguration.create(context)
EmojiCompat.Config
를 사용하여 다른 소스에서 글꼴을 로드하는 자체 구성을 만듭니다. 이 클래스는EmojiCompat
를 수정하기 위한 여러 옵션을 제공합니다. 다음 섹션에 설명된 대로 설정하세요.
EmojiCompat 동작 수정
EmojiCompat.Config
의 인스턴스를 사용하여 EmojiCompat
를 수정할 수 있습니다.
있습니다.
가장 중요한 구성 옵션은 setMetadataLoadStrategy()
입니다. 이 옵션은 EmojiCompat
가 글꼴을 로드하는 시기를 제어합니다. 글꼴 로드 시작 시간:
EmojiCompat.load()
가 호출되어 필요한 다운로드가 트리거됩니다. 이
앱이 글꼴 다운로드를 위한 스레드를 제공하지 않으면 시스템이 글꼴 다운로드를 위한 스레드를 생성합니다.
LOAD_STRATEGY_MANUAL
를 사용하면 EmojiCompat.load()
가 호출되는 시점을 제어할 수 있습니다.
LOAD_STRATEGY_DEFAULT
호출에서 동기식으로 로드가 시작되도록 합니다.
EmojiCompat.init()
대부분의 앱은 스레드와 타이밍을 제어할 수 있도록 LOAD_STRATEGY_MANUAL
를 사용합니다.
여러 단계를 거치게 됩니다 앱은 첫 번째 화면이 표시될 때까지 지연해야 하며
시작 지연 시간 도입 방지 EmojiCompatInitializer
님이 팔로우합니다.
첫 번째 화면이 다시 시작될 때까지 이모티콘 글꼴 로드를 연기합니다.
기본 클래스의 다음 메서드를 사용하여 구성:
setReplaceAll()
:EmojiCompat
가 찾은 모든 이모티콘을 인스턴스로 대체할지 여부 결정 (EmojiSpan
) 기본적으로EmojiCompat
가 시스템이 그 이모티콘을 대체하지는 않습니다.true
로 설정하면EmojiCompat
는 모든 그림 이모티콘을EmojiSpan
객체로 대체합니다.setEmojiSpanIndicatorEnabled()
:EmojiCompat
가 그림 이모티콘을EmojiSpan
로 대체하는지 여부를 나타냅니다. 객체를 지정합니다.true
로 설정하면EmojiCompat
은EmojiSpan
의 배경을 그립니다. 이 메서드는 주로 디버깅 목적으로 사용됩니다.setEmojiSpanIndicatorColor
: 은EmojiSpan
를 나타내는 색상을 설정합니다. 기본값은GREEN
registerInitCallback()
:EmojiCompat
초기화 상태에 관해 앱에 알립니다.
초기화 리스너 추가
EmojiCompat
및 EmojiCompat.Config
클래스는
registerInitCallback()
및
unregisterInitCallback()
메서드를 사용하여 초기화 콜백을 등록 및 등록 취소하세요. 앱에서 사용하는 항목
EmojiCompat
가 초기화될 때까지 대기한 후 그림 이모티콘을 처리해야 합니다.
백그라운드 스레드 또는 사용자 지정 뷰에서 발생합니다.
이러한 메서드를 사용하려면 EmojiCompat.InitCallback
클래스의 인스턴스를 생성해야 합니다. 이러한 메서드를 호출하고 EmojiCompat.InitCallback
클래스의 인스턴스를 전달합니다. 초기화에 성공하면 EmojiCompat
클래스가 onInitialized()
메서드를 호출합니다. 라이브러리가 초기화에 실패하면 EmojiCompat
클래스는
onFailed()
메서드를 사용하여 축소하도록 요청합니다.
언제든지 초기화 상태를 확인하려면
getLoadState()
드림
메서드를 사용하여 축소하도록 요청합니다. 이 메서드는 다음 값 중 하나를 반환합니다.
LOAD_STATE_LOADING
님,
LOAD_STATE_SUCCEEDED
,
또는
LOAD_STATE_FAILED
:
emoji2로 번들된 글꼴 지원
emoji2-bundled
아티팩트를 사용하여 그림 이모티콘 글꼴을 앱에 번들로 묶을 수 있습니다.
하지만 NotoColorEmoji
글꼴이 10MB를 초과하므로
가능하면 앱에서 다운로드 가능한 글꼴을 사용하도록 권장합니다. 이
emoji2-bundled
아티팩트는 지원되지 않는 기기의 앱용입니다.
다운로드할 수 있습니다.
emoji2-bundled
아티팩트를 사용하려면 다음을 진행합니다.
emoji2-bundled
및emoji2
아티팩트를 포함합니다.implementation "androidx.emoji2:emoji2:$emojiVersion" implementation "androidx.emoji2:emoji2-bundled:$emojiVersion"
번들 구성을 사용하도록
emoji2
를 구성합니다.Kotlin
EmojiCompat.init(BundledEmojiCompatConfig(context))
자바
EmojiCompat.init(new BundledEmojiCompatConfig(context));
다음을 포함하여 앞의 단계에 따라 통합을 테스트합니다.
AppCompat
유무와 관계없이emojicompat
입니다. 테스트 문자열이 올바르게 표시됩니다.- 14.0: 🫠, 🫱🏼🫲🏿, 🫰🏽
- 13.1: 😶🌫️, 🧔🏻♀️, 🧑🏿❤️🧑🏾
- 13.0: 🥲, 🥷🏿, 🐻❄️
- 12.1: 🧑🏻🦰, 🧑🏿🦯, 👩🏻🤝👩🏼
- 12.0: 🦩, 🦻🏿, 👩🏼🤝👩🏻
자동 EmojiCompat 구성의 영향
시스템은 시작 라이브러리를 사용하여 기본 구성을 적용합니다.
EmojiCompatInitializer
및
DefaultEmojiCompatConfig
앱에서 첫 번째 활동이 다시 시작된 후 이니셜라이저가 그림 이모티콘을 예약합니다. 있습니다. 이러한 짧은 지연을 통해 앱이 초기 콘텐츠를 표시할 필요 없이 백그라운드 스레드에서 글꼴 로드로 인해 발생할 수 있는 지연 시간
DefaultEmojiCompatConfig
는 시스템에서 설치한 다운로드 가능한 글꼴을 찾습니다.
Google Play와 같은 EmojiCompat
인터페이스를 구현하는 제공자
제공합니다 그러면 Google Play 서비스에서 제공하는 기기에서는 Google Play 서비스를 사용하여 글꼴이 로드됩니다.
이니셜라이저는 그림 이모티콘 글꼴과 글꼴을 로드하는 백그라운드 스레드를 만듭니다.
다운로드에 최대 10초가 걸릴 수 있습니다. 글꼴을 다운로드한 후 백그라운드 스레드에서 EmojiCompat
를 초기화하는 데 약 150밀리초가 걸립니다.
EmojiCompatInitializer
를 중지하는 경우라도 EmojiCompat
의 초기화를 지연합니다. Cloud SDK에서 수동으로
EmojiCompat
, 표시된 후 EmojiCompat.load()
호출
첫 번째 광고와의 백그라운드 경합을 방지하기 위해 앱의 첫 번째 화면에서
화면 로드
로드가 완료되면 EmojiCompat
에서 그림 이모티콘을 담는 데 약 300KB의 RAM을 사용합니다.
메타데이터로 변환할 수 있습니다.