Skip to content

Instantly share code, notes, and snippets.

@yuki-takeichi
Created February 6, 2019 03:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yuki-takeichi/534de17d44ef1ec4dd78bddb818fe16f to your computer and use it in GitHub Desktop.
Save yuki-takeichi/534de17d44ef1ec4dd78bddb818fe16f to your computer and use it in GitHub Desktop.
EmojiCompat with custom emoji font
// See also https://android.googlesource.com/platform/frameworks/support/+/android-cts-9.0_r5/emoji/bundled/src/main/java/androidx/emoji/bundled/BundledEmojiCompatConfig.java
class TwemojiConfig(ctx: Context) : EmojiCompat.Config(BundledMetadataLoader(ctx)) {
class BundledMetadataLoader(ctx: Context) : EmojiCompat.MetadataRepoLoader {
private val mContext = ctx.applicationContext
override fun load(cb: EmojiCompat.MetadataRepoLoaderCallback) {
val runnable = InitRunnable(mContext, cb)
val thread = Thread(runnable)
thread.isDaemon = false
thread.start()
}
}
class InitRunnable(ctx: Context, cb: EmojiCompat.MetadataRepoLoaderCallback) : Runnable {
val mContext = ctx
val mLoaderCallback = cb
override fun run() {
try {
val assetManager = mContext.assets
val resourceIndex = MetadataRepo.create(assetManager, "TwemojiCompat.ttf")
mLoaderCallback.onLoaded(resourceIndex)
} catch (t: Throwable) {
mLoaderCallback.onFailed(t)
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment