2016-05-16 5 views
2

私は絵文字のアイコンを含む回転したTextViewのスクリーンショットを作ろうとしています。しかし、結果のビットマップで私は絵文字が回転していないことを参照してください!なぜこうなった?回転した絵文字を使ってスクリーンショットを作成するにはどうすればよいですか?私は期待して何絵文字で回転した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を回転させると回転しませんが、カルーセルのように動きます)。なぜこれが起こっているのか、または絵文字の回転(最初の画像上)はハードウェアアクセラレーションのためだけですか?

+0

呼び出しがあなたのxml –

+0

を投稿してください'no xml、ビューが作成され、ランタイムに' RelativeLayout 'に追加されました –

+0

@AlexanderAgeichenkoあなたはこれを理解しましたか? – gbhall

答えて

1

ok、私はこの本当に面倒な問題を解決する方法を見つけることができませんでしたので、少しハックする必要がありました。 imageviewsは完全に回転して動作します。 ので、私は基本的にイメージ図を持つすべての操作を行う - と、それを設定すると、私はこの方法を使用したい絵文字テキストのうちの画像です:

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); 
関連する問題