たくさんの画像に線を引くアプリを開発しています。これらの画像を選択するために、ラジオ グループがあり、ユーザーがラジオ ボタンをクリックするたびに、画像がすべての独自の図面と共に読み込まれます。
私のラジオリスナーには、次のコードがあります。
bitmap = BitmapUtils.decodeSampledBitmapFromResource(root + DefinesAndroid.CAMINHO_SHOPPINGS_SDCARD + nomeImagemAtual, size.x, size.y);
mImage.setImageBitmap(bitmap);
mImage.setDrawLines(true);
mImage.setImageBitmap(loadBitmapFromView(mImage));
Android開発者のこのリンクから得たdecodeSampledBitmapFromResource
方法(ビットマップをより効率的にロードします)http://developer.android.com/training/displaying-bitmaps/load-bitmap.html
ビューのビットマップを取得するために呼び出すメソッドは次のとおりです。
public static Bitmap loadBitmapFromView(View v) {
Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height);
v.draw(c);
return b;
}
ImageViewTouchライブラリ(ImageViewのピンチズームを可能にする)を使用しているため、画像のビットマップを設定してmImage
います。これを行わないと、画像に対する操作(ズームイン/ズームなど)ですべてのキャンバス描画が削除されますアウト)。
エラーログは以下
07-11 21:13:41.567: E/AndroidRuntime(20056): java.lang.IllegalArgumentException: width and height must be > 0
07-11 21:13:41.567: E/AndroidRuntime(20056): at android.graphics.Bitmap.createBitmap(Bitmap.java:638)
07-11 21:13:41.567: E/AndroidRuntime(20056): at android.graphics.Bitmap.createBitmap(Bitmap.java:620)
getBitmapFromView
メソッドを呼び出したときに画像ビットマップが完全に読み込まれていないため、このエラーが発生しているとほぼ確信しています。
ビューが完全にロードされたことを知るにはどうすればよいですか?