2010-07-30 12 views
6

Mam tablicę wszystkich identyfikatorów URI obrazów, które wyświetlam na liście. Teraz chcę uruchomić wątek w tle, który pobiera te obrazy z sieci i zapisuje je na karcie SD. Po kliknięciu konkretnego elementu na liście zamiast pobierania z sieci, powinien on pobrać z karty SD w nowym działaniu.Pobieranie obrazów w tle przy wyświetlaniu listy

Jak to zrobić?

+0

Przeczytaj ten wątek, jest wiele informacji. http://stackoverflow.com/questions/541966/android-how-do-i-do-a-lazy-load-of-images-in-listview Preferuję bibliotekę Android-Universal-Image-Loader https://github.com/nostra13/Android-Universal-Image-Loader, ale możesz też znaleźć inne rozwiązania. mam nadzieję, że to pomoże. –

Odpowiedz

0

Sprawdź WebImageView przez matthias käppler.

Możesz zastąpić jego sposób buforowania obrazów za pomocą funkcji karty SD, którą chcesz.

0

Zastosowanie AsyncTask pobieranie w tle podczas pokazać swoją UI

File imageFile; 

zapisywać obrazy z sieci

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 
    } 

Po kliknięciu swoją ListView załadować obraz z 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

Ty może spróbuj użyć mojego leniwego drawa BlĂ ramy (GPL v3 licencjonowanym):

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

-Niestety nie całkiem gotowy do produkcji jeszcze, ale wśród rzeczy próbuje poradzić:

  • tła (non-UI-gwint) ładowanie zasobów graficznych
  • wydajne buforowanie skalowanych bitmap - w przypadku użycia, w którym pobierasz jeden duży obraz, i chcesz wyświetlić go setki razy w mniejszym formacie ikony w widoku listy lub coś takiego:
  • przejrzystość wykorzystania, przez co mam na myśli ...

... skoro masz leniwy-rozciągliwej sesji skonfigurować, zapełniania widoku obrazu jest tak proste, jak:

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

don 't care, który prawdopodobnie odesłał ci normalnie bitmaploadable, lub prawdopodobnie utworzono zadanie asynchroniczne i zwrócił obiekt zastępczy placeholder - losowanie zaktualizuje się i będzie to ImageView hosta po zakończeniu zadania asynchronicznego.

Taka jest teoria. Wydaje się, że do tej pory działało, ale czasami ta spontaniczna aktualizacja UI się nie dzieje ... nie wiem dlaczego: -}

Powiązane problemy