2014-01-17 10 views
5

私はかなり単純なアプリケーションで作業しています。アプリは、ボンネットの下に次のコードを持って:あなたは間違いなく、すでに推測しなかったようKitKatデバイスのbuildDrawingCacheで「ビットマップサイズが32ビットを超えています」

... 
mRootContentView = getWindow().getDecorView().findViewById(android.R.id.content)); 
int[] screenDimensions = AndroidUtils.getScreenDimesions(getContext()); 
bitmap = Bitmap.createBitmap(screenDimensions[0], screenDimensions[1], Bitmap.Config.ARGB_8888); 
Canvas c = new Canvas(bitmap); 
mRootContentView.layout(0, 0, screenDimensions[0], screenDimensions[1]); 
mRootContentView.draw(c); 
... 

、それは全体の現在の活動の「スクリーンショット」を取得します。

java.lang.IllegalArgumentException: bitmap size exceeds 32bits 
at android.graphics.Bitmap.nativeCreate(Native Method) 
at android.graphics.Bitmap.createBitmap(Bitmap.java:809) 
at android.graphics.Bitmap.createBitmap(Bitmap.java:769) 
at android.view.View.buildDrawingCache(View.java:13608) 
at android.view.View.draw(View.java:14154) 
at android.view.ViewGroup.drawChild(ViewGroup.java:3103) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940) 
at net.simonvt.menudrawer.MenuDrawer.dispatchDraw(MenuDrawer.java:665) 
at android.view.View.draw(View.java:14468) 
at android.view.View.draw(View.java:14350) 
at android.view.ViewGroup.drawChild(ViewGroup.java:3103) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940) 
at android.view.View.draw(View.java:14468) 
at android.widget.FrameLayout.draw(FrameLayout.java:472) 
. . . 

この例外は唯一のキットカットのデバイス上でスローされ、こうした:私は私のACRAは私にこれを言って、報告に奇妙な例外に直面してきたアンドロイドV 4.4.2(キットカット)realease後

:ネクサス7とネクサス5

EDIT

ように私はこれをも試してみました

mRootContentView.setDrawingCacheEnabled(true); 
mRootContentView.buildDrawingCache(); 
bitmap = mRootContentView.getDrawingCache(); 

何も変更されていません。

+1

レイアウトの前に測定する必要があります –

答えて

0

あなたの例外がGraphicsJNI::allocateJavaPixelRefからスローされているようです。 Bitmapのサイズが合計32ビットを超えると、推測したように、例外がスローされます。

おそらくアルファチャンネルを必要としない「スクリーンショット」しか取得していないので、RGBA8888ではなく、Bitmap.Config.RGB565を試してみることを考えましたか?しかし、すべてのクラッシュを防ぐかどうかはわかりません。

関連する問題