2016年8月24日水曜日

画面を表示せずにViewのキャプチャを取得する方法

画面表示せずにViewの描画結果をビットマップ化したい!

画面表示時にFWが勝手にやってくれることの一部をやってあげてからdrawing cacheを取得すれば可能です。



1.対象のViewをinflateする

    ViewGroup frame = LayoutInflater.from(context).inflate(R.layout.target, null);


2.Viewのサイズを確定させ子Viewをレイアウトする

    frame.measure(View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));

    frame.layout(0, 0, frame.getMeasuredWidth(), frame.getMeasuredHeight());


3.DrawingCacheを取得する

    frame.setDrawingCacheEnabled(true);
    frame.buildDrawingCache(true);
    Bitmap bitmap = Bitmap.createBitmap(frame.getDrawingCache());

    // destroy drawing cache.
    frame.setDrawingCacheEnabled(false);
    frame.destroyDrawingCache();



あとは取得したbitmapを焼くなり煮るなりしてください。

----------
最後に確認したOSバージョンはAndroid 6.0です

AndroidはGoogle Inc.の商標または登録商標です



0 件のコメント:

コメントを投稿