我正在开发一款应用程序,它可以在一堆图像上绘制线条。为了选择这些图像,我使用了一个单选按钮组,每当用户点击单选按钮时,相应的图像就会加载并呈现所有已有的绘图。
在我的单选按钮监听器中,我有以下代码:
bitmap = BitmapUtils.decodeSampledBitmapFromResource(root + DefinesAndroid.CAMINHO_SHOPPINGS_SDCARD + nomeImagemAtual, size.x, size.y);
mImage.setImageBitmap(bitmap);
mImage.setDrawLines(true);
mImage.setImageBitmap(loadBitmapFromView(mImage));
我从安卓开发者网站上找到了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;
}
我正在设置mImage
的位图,因为我正在使用ImageViewTouch库(它允许在ImageView上进行捏合缩放),如果我不这样做,所有与图像交互(如缩放)的画布绘制都将被删除。
错误日志如下:
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
方法时,图像位图还没有完全加载。
我怎样才能知道视图什么时候完全加载?