Tôi đang phát triển một Ứng dụng để vẽ các đường thẳng trên một loạt Hình ảnh. Để chọn những hình ảnh này, tôi có một nhóm radio và bất cứ khi nào người dùng nhấp vào nút radio, hình ảnh sẽ được tải với tất cả các bản vẽ của riêng nó.Làm thế nào để có được khi một ImageView được tải hoàn toàn trong Android
Trong listenner đài phát thanh của tôi, tôi có đoạn mã sau:
bitmap = BitmapUtils.decodeSampledBitmapFromResource(root + DefinesAndroid.CAMINHO_SHOPPINGS_SDCARD + nomeImagemAtual, size.x, size.y);
mImage.setImageBitmap(bitmap);
mImage.setDrawLines(true);
mImage.setImageBitmap(loadBitmapFromView(mImage));
phương pháp decodeSampledBitmapFromResource
tôi nhận được từ liên kết này trên các nhà phát triển Android (nó tải bitmap effitiently hơn) http://developer.android.com/training/displaying-bitmaps/load-bitmap.html
Và đây là phương pháp tôi gọi để có được Ảnh bitmap của Chế độ xem
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;
}
Tôi đang đặt hình ảnh Bitmap là mImage
vì tôi đang sử dụng Im Thư viện ageViewTouch (cho phép phóng to thu nhỏ trên một ImageView) và nếu tôi không làm điều đó, tất cả bản vẽ canvas sẽ bị xóa với bất kỳ tương tác nào trên hình ảnh (như phóng to/thu nhỏ).
Các lỗi đăng nhập như sau
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)
Tôi gần như chắc chắn rằng lỗi này xảy ra nguyên nhân bitmap hình ảnh không hoàn toàn nạp khi tôi gọi getBitmapFromView
phương pháp.
Làm cách nào để biết thời điểm xem được tải hoàn toàn?
uhm Tôi không nhận được nó, bạn có thể giải thích cho tôi một lần nữa trong mã của bạn? bạn đã đặt setImageBitmap lần đầu tiên. Tại sao bạn muốn đặt nó lần thứ hai và tải với và chiều cao từ xem? –
lần đầu tiên tải ảnh sạch (không có bản vẽ). sau đó tôi vẽ các đường lên hình ảnh bằng cách gọi setDrawLines .. một khi các bản vẽ được vẽ trên Canvas, tôi phải tạo một hình ảnh duy nhất của hình ảnh + bản vẽ .. vì vậy tôi gọi, lần thứ hai, imageBitmap, nhưng lần này , Tôi phải lấy bitmap từ khung nhìn (vì khung nhìn có các hình vẽ) .. theo cách này tôi đặt chúng lại với nhau –
Dường như http://stackoverflow.com/questions/8831642/how-to-draw này -lines-over-imageview-on-android sẽ có nhiều hơn những gì bạn muốn. –