2010-07-30 40 views
6

Tôi có một mảng tất cả các URI của hình ảnh mà tôi đang hiển thị trong Danh sách. Bây giờ, tôi muốn chạy một chuỗi trong nền để lấy hình ảnh này từ web và lưu trữ chúng trên thẻ SD. Vì vậy, khi tôi nhấp vào một phần tử cụ thể trong danh sách thay vì tìm nạp từ web, nó sẽ tìm nạp từ thẻ SD trong hoạt động mới.Tải xuống hình ảnh ở chế độ nền trong khi hiển thị danh sách xem

Làm cách nào để thực hiện việc này?

+0

Đọc chủ đề này, có rất nhiều thông tin. http://stackoverflow.com/questions/541966/android-how-do-i-do-a-lazy-load-of-images-in-listview Tôi thích thư viện Android-Universal-Loader https://github.com/nostra13/Android-Universal-Image-Loader, nhưng bạn cũng có thể tìm thấy các giải pháp khác. hy vọng nó giúp. –

Trả lời

0

Kiểm tra WebImageView bởi matthias käppler.

Bạn có thể thay thế cách lưu hình ảnh trong bộ nhớ cache bằng tính năng SDcard mà bạn muốn.

0

Sử dụng AsyncTask tải ở chế độ nền trong khi hiển thị giao diện người dùng của bạn

File imageFile; 

Lưu hình ảnh từ web

public View getView(int position, View convertView, ViewGroup parent) {  
    imageFile = new File("/sdcard/jorgesysTemp/" + Arraypicname(position); 
    if(!imageFile.exists()){ 
    AsyncTaskProcess() //Download your images to sdcard 
    } 

Khi bạn nhấp vào listview bạn tải hình ảnh từ sdcard

@Override 
    protected void onListItemClick(ListView l, View v, final int position, long id) { 
    //load from sdcard 
     Bitmap bitmapImg = BitmapFactory.decodeFile("/sdcard/jorgesysTemp/" + Arraypicname(position)); 
     BitmapDrawable drawableImg = new BitmapDrawable(bitmapImg);     
     myimageview.setImageDrawable(drawableImg); 
... 
... 
...  
2

Bạn có thể thử sử dụng lazy-drawa của tôi Bles khuôn khổ (GPL v3 được cấp phép):

https://github.com/rtyley/lazy-drawables

-unfortunately nó không hoàn toàn sẵn sàng cho sản xuất, nhưng một trong những điều nó cố gắng để xử lý:

  • nền (phi UI thread) tải các tài nguyên hình ảnh
  • lưu bộ nhớ đệm hiệu quả các hình bitmap được chia tỷ lệ - cho trường hợp sử dụng khi bạn đang tải một hình ảnh lớn duy nhất và muốn hiển thị hàng trăm lần ở định dạng biểu tượng nhỏ hơn trong chế độ xem danh sách hoặc một cái gì đó
  • minh bạch sử dụng, do đó tôi có nghĩa là ...

... một khi bạn có một phiên lười biếng-drawable thiết lập, Populating một cái nhìn hình ảnh dễ dàng như:

Drawable avatarDrawable = imageSession.get(someUserIdentifier); // doesn't block 
imageView.setImageDrawable(avatarDrawable); 

Bạn don 't care rằng nó có thể đã trả lại cho bạn một bitmapdrawable bình thường hoặc có thể sinh ra một tác vụ không đồng bộ và trả về một phần giữ chỗ có thể vẽ được - bản vẽ sẽ tự cập nhật và đó là ImageView lưu trữ khi tác vụ async đã hoàn thành.

Đó là lý thuyết. Có vẻ như sorta-kinda hoạt động cho đến nay, nhưng đôi khi cập nhật giao diện người dùng tự phát không xảy ra ... không chắc chắn lý do: -}

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