Tôi dự định hiển thị Hình ảnh rất lớn trong Android.
Giải pháp đầu tiên của tôi - để cung cấp chúng dưới dạng pdf - không thành công vì không phải mọi thiết bị cầm tay đều được cài đặt sẵn trình xem pdf và tôi không muốn yêu cầu người dùng cài đặt.hiển thị hình ảnh lớn trong Android
Vì vậy, tôi có một png bây giờ (chiều rộng = 3998px chiều cao = 2827px) mà tôi muốn hiển thị. Tôi đã tải xuống hình ảnh này để kiểm tra xem nó sẽ được hiển thị như thế nào. Nó khá đau đớn. Có vẻ như galery chỉ hiển thị hình ảnh này một lần, và nếu tôi phóng to, tôi không thể đọc được văn bản nào cả.
Vì vậy, tôi đã viết một testActivity mà chỉ đơn giản là có một ImageView lồng nhau trong một LinearLayout. Tôi đưa hình ảnh vào hình vẽ và đặt nó làm hình ảnh của ImageView. Unforunately ứng dụng bị treo immediatly, do một "
ERROR/AndroidRuntime(8906): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget"
Tôi không ngờ rằng ONE đơn Hình ảnh có thể quá lớn đối với VM's memory
. Tôi đã chơi một chút xung quanh, thiết lập kích thước ImageViews
-3998 & 2827px
, đặt hình ảnh để sdCard
và đọc nó bằng tay với một fileInputStream
.
trước sự ngạc nhiên lớn của tôi bây giờ cho thấy hình ảnh của tôi, nhưng nếu tôi biến tôi Nexus S ngang tôi nhận được cùng một OutOfMemoryError
như trước đây.
thể somewone chỉ cho tôi những khác biệt chính giữa rec ieving một Bitmap thông qua một FileInputStream
hoặc để đặt nó là ImageView's
nguồn.
Ngoài ra tôi không thể di chuyển thoải mái với hai mẹ scrollViews
Tôi tìm kiếm một giải pháp đơn giản để hiển thị ONE large image
tại một thời điểm với khả năng scroll horizontal and vertical
trong khi có thể phóng to trong và ngoài.
đây là một ví dụ về các hình ảnh tôi muốn hiển thị
Giải pháp tốt. Bây giờ tôi đã tìm thấy một cách tốt hơn nữa (với nhiều nỗ lực mã hóa) bằng cách vẽ hình ảnh của tôi. Tôi cũng có 3 phiên bản của cùng một hình ảnh với chất lượng khác nhau cho các ZoomLevel khác nhau. Điều này sẽ làm việc ngay cả trên các thiết bị cũ, không thể giải mã 1/4 của Bitmap gốc –
** k ** ở đây là gì? Hy vọng ** chiều rộng ** và ** chiều cao ** có nghĩa là kích thước hình ảnh thực tế. Hãy làm rõ điều đó. – AnujAroshA
Rafael: Bạn không nên (theo lý thuyết!) Cần các phiên bản có độ phân giải khác nhau - hãy kiểm tra 'BitmapFactory.Options.inSampleSize'. – Timmmm