o ile mi wiadomo, uniwersalny program ładujący obrazy zapewniają 2 rodzaje metod wyświetlania obrazów. imageLoader.loadImage i imageLoader.displayImage. Ale te dwie metody muszą wiązać się z elementem interfejsu do wyświetlenia. Czy mogę po prostu pobrać pliki z pamięci podręcznej w wątku (do przyszłego wyświetlenia). Nie muszę już wyświetlać tego obrazu.Jak mogę po prostu pobrać obraz z uniwersalnym nośnikiem obrazu?
Odpowiedz
Czy mogę po prostu pobrać pliki z pamięci podręcznej w wątku (do przyszłego wyświetlenia). Nie muszę już wyświetlać tego obrazu.
Możesz pobierać pliki za pomocą Executora lub tworzenia wątku. Nie musisz używać uniwersalnego imageloadera.
http://developer.android.com/reference/java/util/concurrent/Executor.html.
Można również użyć menedżera pobierania i zapisać plik na sdcard. Możesz odzyskać to samo do późniejszego wykorzystania.
celu buforowania bitmapy można zapisywać obrazy do folderu w sdcard.
buforowania bitmapy
http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html.
Buforuje mapy bitowe w pamięci lub na dysku. Link zawiera szczegóły dotyczące tematu.
W zasadzie używasz UIL ofr wyświetlając obrazy w widoku listy lub grdiview. Aby użyć UIL w widoku listy lub gridview, możesz zrobić tak, jak poniżej.
https://github.com/nostra13/Android-Universal-Image-Loader. Opiera się na Lazy List (działa na tej samej zasadzie). Ale ma wiele innych konfiguracji. Możesz wyświetlić obraz błędu, jeśli zakończy się niepowodzenie. Może wyświetlać obrazy z zaokrąglonymi rogami. Może buforować na dysku lub w pamięci. Może kompresować obraz.
w Twojej konstruktora adaptera
File cacheDir = StorageUtils.getOwnCacheDirectory(a, "your folder");
// Get singletone instance of ImageLoader
imageLoader = ImageLoader.getInstance();
// Create configuration for ImageLoader (all options are optional)
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(a)
// You can pass your own memory cache implementation
.discCache(new UnlimitedDiscCache(cacheDir)) // You can pass your own disc cache implementation
.discCacheFileNameGenerator(new HashCodeFileNameGenerator())
.enableLogging()
.build();
// Initialize ImageLoader with created configuration. Do it once.
imageLoader.init(config);
options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.stub_id)//display stub image
.cacheInMemory()
.cacheOnDisc()
.displayer(new RoundedBitmapDisplayer(20))
.build();
W swojej getView()
ImageView image=(ImageView)vi.findViewById(R.id.imageview);
imageLoader.displayImage(imageurl, image,options);//provide imageurl, imageview and options
można skonfigurować z innych opcji do własnych potrzeb.
Wraz z leniwym ładowaniem/Universal Image Loader można wyświetlić uchwyt dla płynnego przewijania i wydajności. http://developer.android.com/training/improving-layouts/smooth-scrolling.html.
Tam jest loadImage(String uri, ImageLoadingListener listener)
, myślę, że można go nazwać null dla słuchacza, jeśli go nie potrzebujesz.
Wyjaśnienie java.lang.IllegalArgumentException: błędne argumenty zostały przekazane do metody displayImage() (odwołanie do ImageView nie może mieć wartości NULL). Właśnie sprawdziłem, przekazując null w miejsce obrazu. przekazanie wartości null jako parametru nie pomoże. – Raghunandan
Tak, próbowałem już wcześniej, nie pomogę. – scott
Nadal można używać UIL
. Na podstawie użytego poniżej obrazu obrazy zostaną zapisane w pamięci podręcznej.
Patrz tutaj - https://github.com/nostra13/Android-Universal-Image-Loader
// Załaduj obraz, dekoduje go i powrócić do Bitmap Bitmap do callback
imageLoader.loadImage(imageUri, displayOptions, new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
// Do whatever you want with Bitmap
}
});
Co masz na myśli przez "return Bitmap to callback"? Modyfikuję mapę bitową loadedImage, ale nie wiem jak ją wyświetlić (zmodyfikowana wersja). Czy mógłbyś rozwinąć? – v4r
Dodawanie do @Robin Srivastava za odpowiedź:
Musisz również instancję ImageLoader
w kontekście, na przykład: imageLoader = ImageLoader.getInstance();
, aby móc korzystać z metody loadImage
. Parametr displayOptions
jest opcjonalny, więc możesz go wykluczyć, jeśli zajdzie taka potrzeba.
- 1. Jak po prostu pobrać JAR za pomocą Mavena?
- 2. Jak mogę pobrać duży obraz z adresu URL?
- 3. (jak) mogę pobrać obraz za pomocą JSoup?
- 4. Jak mogę pobrać obraz przy użyciu Ruby?
- 5. Jak mogę po prostu „uruchom” pliki LISP
- 6. Jak pobrać obraz z HTTP tylko, jeśli obraz jest nowszy?
- 7. Jak mogę pobrać ścieżkę z obrazu w galerii Androida?
- 8. biblioteka obrazów Pythona: Czy mogę po prostu wypełnić obraz jednym kolorem?
- 9. Jak mogę pobrać wartość po użyciu setx?
- 10. NPM: jak po prostu uruchomić po instalacji?
- 11. Czy mogę pobrać Uri z pliku obrazu ze swojej nazwy?
- 12. Jak mogę pobrać plik binarny z MongoDB po jego zapisaniu?
- 13. jak po prostu zaimplementować KeyListener?
- 14. Jak mogę po prostu LINQ Join() połączyć dwa IQueryables?
- 15. Dlaczego Django fcgi po prostu umrzeć? Jak mogę się dowiedzieć?
- 16. Jak utworzyć obraz OpenCV z obrazu PIL?
- 17. Jak mogę po prostu porównać znaki w C++?
- 18. Nie można pobrać obrazu Docker z repozytorium
- 19. obrazu w obraz z cvMatchTemplate - ale jak?
- 20. Jak mogę zmienić rozdzielczość obrazu z rozszerzeniem obrazu?
- 21. Jak mogę pobrać CData z BeautifulSoup
- 22. navigator.geolocation.watchPosition po prostu nie działa
- 23. Jak przechowywać (obraz bitmapowy) i pobrać obraz z bazy danych sqlite w systemie Android?
- 24. Jak mogę zapisać obraz z PIL?
- 25. Android - Jak pobrać obraz i użyć go w czasie wykonywania?
- 26. Jak wyświetlić obraz z Internetu?
- 27. Jak mogę odświeżyć galerię po włożeniu obrazu do Androida?
- 28. Przeciągnij obraz po dotknięciu
- 29. Jak mogę pobrać bibliotekę Gson?
- 30. Jak mogę pobrać średnio 100 obrazów za pomocą opencv?
'.discCache (new UnlimitedDiscCache (cacheDir)) // Możesz przekazać własną implementację pamięci podręcznej dysku .discCacheFileNameGenerator (new HashCodeFileNameGenerator())' tego właśnie chcę, thx. – scott
Tutaj, gdy przechodzę nazwę katalogu w 'new UnlimitedDiscCache (cacheDir)' niż ten katalog nie jest tworzony w sdcard Dlaczego się stało? –
czy dodałeś uprawnienie do zapisu w pliku manifestu. sprawdź czy (cacheDir.exists()) {log some message} – Raghunandan