Bow*_*owi 12 unicode android draw emoji android-canvas
我想用一个画布绘制一个unicode字符drawText().
canvas.drawText("\u270c\ufe0e", x, y, paint);
Run Code Online (Sandbox Code Playgroud)
在运行Android 7的测试设备上,它显示正确:
但是在我的模拟器中,"运行"Android 6,并且在运行Android 6的真实设备上,它被绘制为表情符号,无论如何\ufe0e:
这当然不是我想要的,因为我想把它画成黑色而不是粉红色!有没有办法在绘制文本时"关闭"Emojis?
您可以尝试使用 EmojiCompat 库,如此处和此处所述。将其添加到您的依赖项中;
dependencies {
...
implementation "com.android.support:support-emoji:27.1.1"
implementation "com.android.support:support-emoji-bundled:27.1.1"
...
}
Run Code Online (Sandbox Code Playgroud)
初始化库;
dependencies {
...
implementation "com.android.support:support-emoji:27.1.1"
implementation "com.android.support:support-emoji-bundled:27.1.1"
...
}
Run Code Online (Sandbox Code Playgroud)
然后替换TextView为EmojiTextView. 这是一个可以用来测试的示例:
EmojiCompat.init(new BundledEmojiCompatConfig(this).setReplaceAll(true));
Run Code Online (Sandbox Code Playgroud)
如果它不能按您希望的方式工作,请.setReplaceAll(true)从初始化行中删除,然后重试,看看是否有效。
编辑:
如果您想手动将表情符号文本绘制到画布上,您可以使用EmojiCompat.process(...)和 来完成android.text.StaticLayout。我还没有尝试过,所以可能会有错误,但它应该可以工作。
// assuming x, y, and paint are defined
CharSequence emoji = EmojiCompat.get().process("\u270c\ufe0e");
StaticLayout layout = new StaticLayout(emoji, paint,
canvas.getWidth(), Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
canvas.translate(x, y);
layout.draw(canvas);
canvas.translate(-x, -y);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
414 次 |
| 最近记录: |