質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

解決済

1回答

2201閲覧

EmojiCompatを使用して取得した最新の絵文字をBitmap化する

Michy

総合スコア13

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2018/06/19 16:17

Androidアプリ内で、最新の絵文字(EmojiCompatで取得できる絵文字)を画像として扱い、加工・編集をしたいと考えています。
通常の文字を画像変換する作業と同様に、アプリ内でlayoutを呼び出し、TextViewをBitmap化したいと考えているのですが、Bitmap化する際にEmojiCompatが効かずに古い絵文字表示となってしまっています。
bitmap化にこだわらず、絵文字を画像として扱える方法のヒントや調べ方等ご存知でしたらご教示いただけますと幸いです。

###実施したいこと
EmojiCompatを使用して取得した最新の絵文字をBitmap化し、アプリ上で加工したい。

###試したこと
EmojiAppCompatTextViewを呼び出し、その中でBitmapを生成する。

###試行結果
期待動作は最新の絵文字の状態でBitmap化されることですが、試した際に「実施結果」のように古い絵文字(ハンバーガーのチーズが肉の下にある)になっており、EmojiCompatが効いていないように見える

なお、Bitmap化せずに、そのままレイアウトを呼び出して表示したときは最新の絵文字化されていたため、EmojiCompat自体は動いているものと思われます。

###mainActivity

kotlin

1 //EmojiCompat 2 val config = BundledEmojiCompatConfig(applicationContext) 3 config.setReplaceAll(true) 4 EmojiCompat.init(config) 5 6 //描画用activity呼び出し 7 setContentView(R.layout.activity_main) 8 9 //対象絵文字をセット 10 val text="\uD83C\uDF54" 11 12 //viewを作成し、ハンバーガー絵文字をセット 13 val viewBuffer = LayoutInflater.from(this).inflate(R.layout.grid,null) 14 val emojiTv = viewBuffer.findViewById<EmojiAppCompatTextView>(R.id.textView_em) 15 emojiTv.text=text 16 17 //bitmapに絵文字を描画 18 viewBuffer.measure(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT) 19 val bitmapBuffer = Bitmap.createBitmap(viewBuffer.measuredWidth,viewBuffer.measuredHeight,Bitmap.Config.ARGB_8888) 20 val canvas = Canvas(bitmapBuffer) 21 22 viewBuffer.layout(0,0,viewBuffer.measuredWidth,viewBuffer.measuredHeight) 23 viewBuffer.draw(canvas) 24 25 //imageviewにbigmapを描画 26 val imageView = findViewById<ImageView>(R.id.imageView) 27 imageView.setImageBitmap(bitmapBuffer)

###R.layout.grid.xml

xml

1<?xml version="1.0" encoding="utf-8"?> 2 3 <android.support.text.emoji.widget.EmojiAppCompatTextView 4 android:id="@+id/textView_em" 5 android:layout_width="70dp" 6 android:layout_height="70dp" 7 android:gravity="center" 8 android:text="????" 9 android:textColor="@android:color/black" 10 android:textSize="50sp" 11 android:maxLines="1"/> 12 13

###実施結果
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Bitmap化の時点でEmojiCompatの初期設定が終わっていないように思います。以下のように、設定が終わるのを待ってからBitmap化するようにしてみてください。

kotlin

1EmojiCompat.init(config) 2 .registerInitCallback(object : EmojiCompat.InitCallback() { 3 override fun onInitialized() { 4 super.onInitialized() 5 6 // ここでBitmap化の処理を行う 7 } 8 })

投稿2018/06/20 12:42

kakajika

総合スコア3131

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Michy

2018/06/20 16:01

コメントいただいた方法で無事に実装できました! 的確なアドバイスありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問