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
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/20 16:01