3

このトピックに関するほぼすべての投稿を読みましたが、どれも役に立たないようです。

現在の画面のスクリーンショットをキャプチャしようとしています。このために、getDrawingCache を使用しています。これが私のコードです:

mRootView.get().setDrawingCacheEnabled(true);
mRootView.get().buildDrawingCache();
Bitmap screenShot = Bitmap.createBitmap(mRootView.get().getDrawingCache());
mRootView.get().setDrawingCacheEnabled(false);

結果のビットマップは常に黒です。

mRootView は、私のルート ビューであるドロワー レイアウトへの弱参照です。

これが私が試したことです:

  1. メジャーとレイアウトの呼び出しを追加します (ただし、このコードはボタンが押されたときに実行されるため、ビューは既にレイアウトされているはずなので、これは必要ありません)。
  2. setDrawingCacheEnabled(true) を呼び出す前に、レイヤ タイプを LAYER_TYPE_NONE に設定します。
  3. 別のビューをルート ビューとして使用する (たとえば、DrawerLayout 内の ViewPager)。

何も機能していないようで、アイデアが不足しています。

4

2 に答える 2

1

ビューをキャンバスに描画できます-

メインレイアウト参照をこのメソッドに渡します-

 Bitmap file = save(layout);

 Bitmap save(View v)
   {
    Bitmap b = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(b);
    v.draw(c);
    return b;
   }
于 2015-01-22T16:34:12.737 に答える