如何使用表情符号截取旋转的TextView屏幕截图?

时间:2016-05-16 13:02:44

标签: android bitmap textview screenshot emoji

我正在尝试制作包含表情符号图标的旋转TextView的屏幕截图。但在结果位图上,我看到表情符号没有旋转!为什么会这样?如何使用旋转的表情符号制作屏幕截图?

我的期望:

enter image description here

这就是我得到的:

enter image description here

我正在使用此方法获取视图的屏幕截图:

layout.setDrawingCacheEnabled(true);
layout.buildDrawingCache();
Bitmap bitmap = null;
if (layout.getDrawingCache() != null)
    bitmap = layout.getDrawingCache().copy(Bitmap.Config.ARGB_8888, false);
layout.setDrawingCacheEnabled(false);
layout.destroyDrawingCache();

更新 正如我想的那样,如果我设置textView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);,那么即使在TextView中也不会旋转表情符号(如果你旋转TextView - 它们不会被旋转,它们只会像旋转木马一样移动),但我仍然不喜欢我真的明白为什么会发生这种情况,或表情符号的旋转(在第一张图片上)只是因为硬件加速?

1 个答案:

答案 0 :(得分:1)

好吧,我无法找到解决这个令人讨厌的问题的方法,所以我不得不破解它。 imageview与旋转完美配合。 所以我基本上用图像视图进行所有操作 - 并使用此方法从我想要的表情符号文本中设置它的图像:

private Bitmap generateBitmapFromText(int size, String res) {
    TextView tv = new TextView(getContext());
    tv.setText(res);
    tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, 150f);
    tv.setTextColor(0xffffffff);
    tv.measure(size, size);
    int questionWidth = tv.getMeasuredWidth();
    int questionHeight = tv.getMeasuredHeight();
    Bitmap bitmap = Bitmap.createBitmap(questionWidth, questionHeight, Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(bitmap);
    tv.layout(0, 0, questionWidth, questionHeight);
    tv.draw(c);
    return bitmap;
}

然后我打电话

    Bitmap bitmap = generateBitmapFromText(stickersStartingSize, res);
    imageview.setImageBitmap(bitmap);