2

contentビューを取得して描画することで、アクティビティのビットマップをスナップしていました。

View view = activity.findViewById(android.R.id.content)

Bitmap bitmap = Bitmap.createBitmap(
    view.getWidth(), view.getHeight(), Config.ARGB_8888
);

view.draw(new Canvas(bitmap));

現在、ActionBar を使用していますが、contentビューの下にネストされていないため、除外されています。どうすれば実際のルート ビューを取得できますか? または、それが不可能な場合は、他の方法でアクション バーを使用して写真を撮りますか?

4

1 に答える 1

5

ActionBar を含むウィンドウ全体のビットマップを取得するには、DecorView を使用できます。

  1. まず、描画キャッシュを有効にする必要があります

    getWindow().getDecorView().setDrawingCacheEnabled(true);
    
  2. ビットマップを取得する

    Bitmap bmp = getWindow().getDecorView().getDrawingCache();  
    
  3. 他の場所でビットマップを使用します。これを ImageView で試してみると、うまくいきます。

  4. 描画キャッシュを無効にする

    getWindow().getDecorView().setDrawingCacheEnabled(false);
    
于 2012-07-19T02:30:53.057 に答える