2010-05-31 35 views
7

Tôi có một số hình ảnh mà tôi đã tải từ một nguồn từ xa được lưu trữ trong các biến Bitmap và tôi muốn hiển thị chúng. Ngoài việc chuyển đổi giữa các hình ảnh này, người dùng cũng có thể thu phóng và xoay chúng. Ý tưởng đầu tiên của tôi là bằng cách nào đó vượt qua chúng thông qua một ý định để xây dựng trong ứng dụng bộ sưu tập nhưng điều này dường như không thể. Một giải pháp được đề xuất ở một số nơi là sử dụng WebView vì nó đã hỗ trợ phóng to và thu phóng. Câu hỏi của tôi là dữ liệu bitmap của tôi có được vào WebView như thế nào? Tôi có phải viết nó vào một tập tin đầu tiên, mà tôi sẽ phải loại bỏ một lần nữa sau đó, hoặc là có một cách dễ dàng hơn?Android: Cách dễ nhất để làm cho một WebView hiển thị một Bitmap?

Hoặc có cách nào tốt hơn để hoàn thành mục tiêu chính của tôi, hiển thị dữ liệu bitmap dưới dạng hình ảnh có thể thu phóng và có thể xoay được không?

Trả lời

0

Tôi đã không hài lòng với WebView sau khi tất cả vì vậy tôi đã kết thúc việc tạo hình ảnh của riêng mình đang xem Hoạt động. Mô tả thêm về cách tôi đã làm nó có thể được tìm thấy in this post on google groups.

4

Bạn chỉ có thể sử dụng chế độ xem web để trực tiếp xem hình ảnh của mình từ xa. Bạn không cần phải lưu lại hình ảnh trong một tập tin. Đây là đoạn mã mẫu.

myWebView.getSettings().setBuiltInZoomControls(true); //to get zoom functionalities 

String url = "http://....."; //url of your image 

String x= "<html><head><meta name=\"viewport\" content=\"width=device-width, minimum-scale=1.0\"/><style type=\"text/css\">html, body {margin: 0;padding: 0;} img {border: none;}</style><head><body style=\"background: black;\"><table><tr><td align=\"center\"><img src=\"" + url + "\" /></td></tr></table></body></html>"; 

myWebView.loadData(x, "text/html", "UTF-8"); 

Giới thiệu về chuyển đổi hình ảnh, bạn chỉ có thể thay đổi giá trị của url và gọi hàm tải lại lần nữa của chế độ xem web.

+0

Lý do tại sao tôi muốn chuyển dữ liệu bitmap mà tôi đã tải là theo cách này, ứng dụng của tôi có thể lưu trữ hình ảnh (trong trường hợp của tôi trong cơ sở dữ liệu) để nó chỉ phải được tải một lần. –

+0

Theo như tôi biết, webview đã có một tính năng bộ nhớ đệm. Bạn có thể ghi đè hành vi của nó bằng cách chỉ định chế độ bộ nhớ cache của nó. myWebView.getSettings(). SetCacheMode (chế độ); Bạn có thể tham khảo liên kết này. http://developer.android.com/intl/de/reference/android/webkit/WebSettings.html Bạn có thể sử dụng 'LOAD_CACHE_ELSE_NETWORK' làm chế độ trong đó nó sử dụng bộ nhớ cache nếu nội dung ở đó, ngay cả khi hết hạn, tải từ mạng. Một cách khác là tự tay xử lý việc thu phóng, di chuyển và lưu vào bộ nhớ đệm của chính bạn mà không cần sử dụng chế độ xem web. Bạn có thể xem mã ViewImage.java trong gói máy ảnh của mã nguồn Android. – capecrawler

Các vấn đề liên quan