J'écris une galerie personnalisée en utilisant la bibliothèque UIL et pour tester les performances, j'ai modifié ImagePagerActivity
(par exemple du code) pour charger des images depuis la carte SD. Tout fonctionne bien mais le chargement est trop lent, parfois il faut même 5 secondes pour charger une seule image. Cependant si j'utilise la galerie intégrée, son chemin est plus rapide et charge plus d'images en millisecondes. Voici l'extrait de modification onCreateChargeur d'images universel charges plus lent
File file = new File(Environment.getExternalStorageDirectory(), "dcim/100MEDIA/");
File[] images = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String filename) {
return filename.toLowerCase(Locale.US).endsWith(".jpg");
}
});
String[] imageUrls = new String[images.length];
for (int a = 0; a < imageUrls.length; a++)
imageUrls[a] = "file://" + images[a].getAbsolutePath();
options = new DisplayImageOptions.Builder().showImageForEmptyUri(R.drawable.ic_empty)
.showImageOnFail(R.drawable.ic_error).resetViewBeforeLoading(true).cacheOnDisc(true)
.cacheInMemory(true).imageScaleType(ImageScaleType.EXACTLY).bitmapConfig(Bitmap.Config.RGB_565)
.displayer(new FadeInBitmapDisplayer(300)).build();
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this)
.defaultDisplayImageOptions(options).discCacheExtraOptions(800, 800, CompressFormat.PNG, 0, null)
.build();
ImageLoader.getInstance().init(config);
et peu modifiée ImagePagerAdapter
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
spinner.setVisibility(View.GONE);
Toast.makeText(ImagePagerActivity.this, loadedImage.getWidth() + " x " + loadedImage.getHeight(),
Toast.LENGTH_SHORT).show();
}
dimension d'image Habituellement commune est 2592x1552
UIL 1.8.6
version Android: 4.0.3
D'autres sont exactement les mêmes que l'exemple de code
Essayez de désactiver la mise en cache sur le disque. – NOSTRA
fait, même résultat :) – xmen