5

これらの行を使用して、アクティビティのスクリーンショットを撮ります。

View toppest = ((ViewGroup) ctx.getWindow().getDecorView().findViewById(android.R.id.content)).getChildAt(0);
toppest.setDrawingCacheEnabled(true);
Bitmap bmap = toppest.getDrawingCache();
Utils.saveBitmapOnSdcard(bmap);
toppest.setDrawingCacheEnabled(false);

とにかく、このスクリーンショットにはアクションバーが含まれていません。

actionBarでスクリーンショットを作成するにはどうすればよいですか?

詳細情報:windowActionBarOverlayオプションを「true」に設定してSherlockアクションバーの実装を使用します。

4

2 に答える 2

7

私は解決策を見つけました。フルスクリーンのビットマップキャッシュを取得するには、ctx.getWindow()。getDecorView()ビューを使用する必要があります。

また、細かい部分もあります。スクリーンショットにはステータスバー用の空きスペースが含まれています。Window.ID_ANDROID_CONTENTの上部マージンを使用して、ステータスバーの高さをスキップします。最後に、これにより、以前に電話で見たのと同じサイズのアクティビティの全画面が表示されます。

  View view = ctx.getWindow().getDecorView();
  view.setDrawingCacheEnabled(true);

  Bitmap bmap = view.getDrawingCache();
  Log.i(TAG,"bmap:" + b);


  int contentViewTop = ctx.getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop(); /* skip status bar in screenshot */
  Storage.shareBitmapInfo = Bitmap.createBitmap(bmap, 0, contentViewTop, bmap.getWidth(), bmap.getHeight() - contentViewTop, null, true);

  view.setDrawingCacheEnabled(false);
于 2012-11-07T15:03:33.220 に答える
3

解決策はここにあります:

ステータスバーの高さ?

Rect rectgle= new Rect();
Window window= getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(rectgle);
int StatusBarHeight= rectgle.top;
int contentViewTop= 
    window.findViewById(Window.ID_ANDROID_CONTENT).getTop();
int TitleBarHeight= contentViewTop - StatusBarHeight;

   Log.i("*** Jorgesys :: ", "StatusBar Height= " + StatusBarHeight + " , TitleBar Height = " + TitleBarHeight);
于 2013-04-23T00:32:24.237 に答える