More changes to make icons smooth on older devices

* Never do any kind of scaling (was only done in low resolution screens)
* Don't animate (fade-in) on older devices
This commit is contained in:
Daniel Martí 2013-10-25 17:24:00 +02:00
parent 8f7d09f41a
commit 1346d370cb

View File

@ -24,6 +24,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.Semaphore; import java.util.concurrent.Semaphore;
import android.os.Build;
import android.app.Application; import android.app.Application;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.util.Log; import android.util.Log;
@ -34,6 +35,7 @@ import android.graphics.Bitmap;
import com.nostra13.universalimageloader.utils.StorageUtils; import com.nostra13.universalimageloader.utils.StorageUtils;
import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache; import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;
import com.nostra13.universalimageloader.cache.disc.naming.FileNameGenerator; import com.nostra13.universalimageloader.cache.disc.naming.FileNameGenerator;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer; import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoader;
@ -80,23 +82,47 @@ public class FDroidApp extends Application {
DB.initDB(ctx); DB.initDB(ctx);
UpdateService.schedule(ctx); UpdateService.schedule(ctx);
File cacheDir = new File(StorageUtils.getCacheDirectory(ctx), "icons"); DisplayImageOptions defaultOptions;
DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder() int threads;
.cacheInMemory(true)
.cacheOnDisc(true) // Parameters for 2.2 and below
.showImageOnLoading(android.R.drawable.sym_def_app_icon) if (Build.VERSION.SDK_INT < Build.VERSION_CODES.GINGERBREAD) {
.displayer(new FadeInBitmapDisplayer(250, true, true, false)) defaultOptions = new DisplayImageOptions.Builder()
.bitmapConfig(Bitmap.Config.RGB_565) .cacheInMemory(true)
.build(); .cacheOnDisc(true)
.showImageOnLoading(android.R.drawable.sym_def_app_icon)
.bitmapConfig(Bitmap.Config.RGB_565)
.imageScaleType(ImageScaleType.NONE)
.build();
threads = 1;
}
// Parameters for 2.3 and above
else {
defaultOptions = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisc(true)
.showImageOnLoading(android.R.drawable.sym_def_app_icon)
.displayer(new FadeInBitmapDisplayer(250, true, true, false))
.bitmapConfig(Bitmap.Config.RGB_565)
.imageScaleType(ImageScaleType.NONE)
.build();
threads = Runtime.getRuntime().availableProcessors() * 2;
}
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(ctx) ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(ctx)
.discCache(new UnlimitedDiscCache(cacheDir, new FileNameGenerator() { .discCache(new UnlimitedDiscCache(
public String generate(String imageUri) { new File(StorageUtils.getCacheDirectory(ctx), "icons"),
return imageUri.substring(imageUri.lastIndexOf('/') + 1); new FileNameGenerator() {
} } )) public String generate(String imageUri) {
return imageUri.substring(
imageUri.lastIndexOf('/') + 1);
} } ))
.defaultDisplayImageOptions(defaultOptions) .defaultDisplayImageOptions(defaultOptions)
.threadPoolSize(4) .threadPoolSize(threads)
.build(); .build();
ImageLoader.getInstance().init(config); ImageLoader.getInstance().init(config);
Log.d("FDroid", "Universal Image Loader started with "
+ threads + " threads");
} }
Context ctx; Context ctx;