diff --git a/app/src/main/java/org/fdroid/fdroid/AppDetails2.java b/app/src/main/java/org/fdroid/fdroid/AppDetails2.java index afe3d8e7b..554016be4 100644 --- a/app/src/main/java/org/fdroid/fdroid/AppDetails2.java +++ b/app/src/main/java/org/fdroid/fdroid/AppDetails2.java @@ -173,7 +173,7 @@ public class AppDetails2 extends AppCompatActivity // Load the feature graphic, if present final FeatureImage featureImage = (FeatureImage) findViewById(R.id.feature_graphic); - DisplayImageOptions displayImageOptions = Utils.getImageLoadingOptions().build(); + DisplayImageOptions displayImageOptions = Utils.getRepoAppDisplayImageOptions(); String featureGraphicUrl = app.getFeatureGraphicUrl(this); featureImage.loadImageAndDisplay(ImageLoader.getInstance(), displayImageOptions, featureGraphicUrl, app.iconUrl); diff --git a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java index de4d3a758..a64a73284 100644 --- a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java +++ b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java @@ -382,6 +382,7 @@ public class FDroidApp extends Application { ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext()) .imageDownloader(new ImageLoaderForUIL(getApplicationContext())) + .defaultDisplayImageOptions(Utils.getDefaultDisplayImageOptionsBuilder().build()) .threadPoolSize(4) .build(); ImageLoader.getInstance().init(config); diff --git a/app/src/main/java/org/fdroid/fdroid/NotificationHelper.java b/app/src/main/java/org/fdroid/fdroid/NotificationHelper.java index 7d9a5d9d6..927b5626b 100644 --- a/app/src/main/java/org/fdroid/fdroid/NotificationHelper.java +++ b/app/src/main/java/org/fdroid/fdroid/NotificationHelper.java @@ -21,10 +21,8 @@ import android.text.Spanned; import android.text.TextUtils; import android.text.style.StyleSpan; import android.view.View; -import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.assist.FailReason; -import com.nostra13.universalimageloader.core.assist.ImageScaleType; import com.nostra13.universalimageloader.core.assist.ImageSize; import com.nostra13.universalimageloader.core.listener.ImageLoadingListener; import com.nostra13.universalimageloader.utils.DiskCacheUtils; @@ -54,7 +52,6 @@ class NotificationHelper { private final Context context; private final NotificationManagerCompat notificationManager; private final AppUpdateStatusManager appUpdateStatusManager; - private final DisplayImageOptions displayImageOptions; private final ArrayList updates = new ArrayList<>(); private final ArrayList installed = new ArrayList<>(); @@ -62,12 +59,6 @@ class NotificationHelper { this.context = context; appUpdateStatusManager = AppUpdateStatusManager.getInstance(context); notificationManager = NotificationManagerCompat.from(context); - displayImageOptions = new DisplayImageOptions.Builder() - .cacheInMemory(true) - .cacheOnDisk(true) - .imageScaleType(ImageScaleType.NONE) - .bitmapConfig(Bitmap.Config.RGB_565) - .build(); IntentFilter filter = new IntentFilter(); filter.addAction(AppUpdateStatusManager.BROADCAST_APPSTATUS_LIST_CHANGED); @@ -506,7 +497,8 @@ class NotificationHelper { Bitmap iconLarge = null; if (TextUtils.isEmpty(entry.app.iconUrl)) { return null; - } else if (entry.status == AppUpdateStatusManager.Status.Downloading || entry.status == AppUpdateStatusManager.Status.Installing) { + } else if (entry.status == AppUpdateStatusManager.Status.Downloading + || entry.status == AppUpdateStatusManager.Status.Installing) { Bitmap bitmap = Bitmap.createBitmap(largeIconSize.x, largeIconSize.y, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); Drawable downloadIcon = ContextCompat.getDrawable(context, R.drawable.ic_notification_download); @@ -516,10 +508,11 @@ class NotificationHelper { } return bitmap; } else if (DiskCacheUtils.findInCache(entry.app.iconUrl, ImageLoader.getInstance().getDiskCache()) != null) { - iconLarge = ImageLoader.getInstance().loadImageSync(entry.app.iconUrl, new ImageSize(largeIconSize.x, largeIconSize.y), displayImageOptions); + iconLarge = ImageLoader.getInstance().loadImageSync( + entry.app.iconUrl, new ImageSize(largeIconSize.x, largeIconSize.y)); } else { // Load it for later! - ImageLoader.getInstance().loadImage(entry.app.iconUrl, new ImageSize(largeIconSize.x, largeIconSize.y), displayImageOptions, new ImageLoadingListener() { + ImageLoader.getInstance().loadImage(entry.app.iconUrl, new ImageSize(largeIconSize.x, largeIconSize.y), new ImageLoadingListener() { AppUpdateStatusManager.AppUpdateStatus entry; diff --git a/app/src/main/java/org/fdroid/fdroid/Utils.java b/app/src/main/java/org/fdroid/fdroid/Utils.java index bb3873309..a0480f461 100644 --- a/app/src/main/java/org/fdroid/fdroid/Utils.java +++ b/app/src/main/java/org/fdroid/fdroid/Utils.java @@ -92,6 +92,9 @@ public final class Utils { "%.0f B", "%.0f KiB", "%.1f MiB", "%.2f GiB", }; + private static DisplayImageOptions.Builder defaultDisplayImageOptionsBuilder; + private static DisplayImageOptions repoAppDisplayImageOptions; + public static final String FALLBACK_ICONS_DIR = "/icons/"; /* @@ -369,15 +372,33 @@ public final class Utils { return new Locale(languageTag); } - public static DisplayImageOptions.Builder getImageLoadingOptions() { - return new DisplayImageOptions.Builder() - .cacheInMemory(true) - .cacheOnDisk(true) - .imageScaleType(ImageScaleType.NONE) - .showImageOnLoading(R.drawable.ic_repo_app_default) - .showImageForEmptyUri(R.drawable.ic_repo_app_default) - .displayer(new FadeInBitmapDisplayer(200, true, true, false)) - .bitmapConfig(Bitmap.Config.RGB_565); + public static DisplayImageOptions.Builder getDefaultDisplayImageOptionsBuilder() { + if (defaultDisplayImageOptionsBuilder == null) { + defaultDisplayImageOptionsBuilder = new DisplayImageOptions.Builder() + .cacheInMemory(true) + .cacheOnDisk(true) + .considerExifParams(false) + .bitmapConfig(Bitmap.Config.RGB_565) + .imageScaleType(ImageScaleType.NONE); + } + return defaultDisplayImageOptionsBuilder; + } + + /** + * Gets the {@link DisplayImageOptions} instance used to configure + * {@link com.nostra13.universalimageloader.core.ImageLoader} instances + * used to display app icons. It lazy loads a reusable static instance. + */ + public static DisplayImageOptions getRepoAppDisplayImageOptions() { + if (repoAppDisplayImageOptions == null) { + repoAppDisplayImageOptions = getDefaultDisplayImageOptionsBuilder() + .showImageOnLoading(R.drawable.ic_repo_app_default) + .showImageForEmptyUri(R.drawable.ic_repo_app_default) + .showImageOnFail(R.drawable.ic_repo_app_default) + .displayer(new FadeInBitmapDisplayer(200, true, true, false)) + .build(); + } + return repoAppDisplayImageOptions; } // this is all new stuff being added @@ -554,8 +575,10 @@ public final class Utils { } } - // Need this to add the unimplemented support for ordered and unordered - // lists to Html.fromHtml(). + /** + * Need this to add the unimplemented support for ordered and unordered + * lists to Html.fromHtml(). + */ public static class HtmlTagHandler implements Html.TagHandler { int listNum; diff --git a/app/src/main/java/org/fdroid/fdroid/privileged/views/InstallConfirmActivity.java b/app/src/main/java/org/fdroid/fdroid/privileged/views/InstallConfirmActivity.java index 5c3287074..f9f9791b8 100644 --- a/app/src/main/java/org/fdroid/fdroid/privileged/views/InstallConfirmActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/privileged/views/InstallConfirmActivity.java @@ -23,7 +23,6 @@ import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; import android.content.Intent; import android.content.pm.ApplicationInfo; -import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.FragmentActivity; @@ -36,11 +35,10 @@ import android.widget.Button; import android.widget.ImageView; import android.widget.TabHost; import android.widget.TextView; -import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; -import com.nostra13.universalimageloader.core.assist.ImageScaleType; import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.R; +import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.data.Apk; import org.fdroid.fdroid.data.ApkProvider; import org.fdroid.fdroid.data.App; @@ -71,15 +69,6 @@ public class InstallConfirmActivity extends FragmentActivity implements OnCancel private App app; - private final DisplayImageOptions displayImageOptions = new DisplayImageOptions.Builder() - .cacheInMemory(true) - .cacheOnDisk(true) - .imageScaleType(ImageScaleType.NONE) - .showImageOnLoading(R.drawable.ic_repo_app_default) - .showImageForEmptyUri(R.drawable.ic_repo_app_default) - .bitmapConfig(Bitmap.Config.RGB_565) - .build(); - private void startInstallConfirm() { View appSnippet = findViewById(R.id.app_snippet); TextView appName = (TextView) appSnippet.findViewById(R.id.app_name); @@ -87,7 +76,8 @@ public class InstallConfirmActivity extends FragmentActivity implements OnCancel TabHost tabHost = (TabHost) findViewById(android.R.id.tabhost); appName.setText(app.name); - ImageLoader.getInstance().displayImage(app.iconUrl, appIcon, displayImageOptions); + ImageLoader.getInstance().displayImage(app.iconUrl, appIcon, + Utils.getRepoAppDisplayImageOptions()); tabHost.setup(); ViewPager viewPager = (ViewPager) findViewById(R.id.pager); diff --git a/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java b/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java index d6dea4384..e31f174c1 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java +++ b/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java @@ -6,7 +6,6 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.res.Resources; -import android.graphics.Bitmap; import android.net.Uri; import android.support.annotation.DrawableRes; import android.support.annotation.LayoutRes; @@ -34,11 +33,7 @@ import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; - -import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; -import com.nostra13.universalimageloader.core.assist.ImageScaleType; - import org.fdroid.fdroid.Preferences; import org.fdroid.fdroid.R; import org.fdroid.fdroid.Utils; @@ -317,7 +312,6 @@ public class AppDetailsRecyclerViewAdapter final TextView progressLabel; final TextView progressPercent; final View progressCancel; - final DisplayImageOptions displayImageOptions; boolean descriptionIsExpanded; HeaderViewHolder(View view) { @@ -340,14 +334,6 @@ public class AppDetailsRecyclerViewAdapter progressLabel = (TextView) view.findViewById(R.id.progress_label); progressPercent = (TextView) view.findViewById(R.id.progress_percent); progressCancel = view.findViewById(R.id.progress_cancel); - displayImageOptions = new DisplayImageOptions.Builder() - .cacheInMemory(true) - .cacheOnDisk(true) - .imageScaleType(ImageScaleType.NONE) - .showImageOnLoading(R.drawable.ic_repo_app_default) - .showImageForEmptyUri(R.drawable.ic_repo_app_default) - .bitmapConfig(Bitmap.Config.RGB_565) - .build(); descriptionView.setMaxLines(MAX_LINES); descriptionView.setEllipsize(TextUtils.TruncateAt.MARQUEE); descriptionMoreView.setOnClickListener(new View.OnClickListener() { @@ -408,7 +394,7 @@ public class AppDetailsRecyclerViewAdapter } public void bindModel() { - ImageLoader.getInstance().displayImage(app.iconUrl, iconView, displayImageOptions); + ImageLoader.getInstance().displayImage(app.iconUrl, iconView, Utils.getRepoAppDisplayImageOptions()); titleView.setText(app.name); if (!TextUtils.isEmpty(app.authorName)) { authorView.setText(context.getString(R.string.by_author_format, app.authorName)); diff --git a/app/src/main/java/org/fdroid/fdroid/views/ScreenShotsActivity.java b/app/src/main/java/org/fdroid/fdroid/views/ScreenShotsActivity.java index d85988026..9d5aea335 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/ScreenShotsActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/views/ScreenShotsActivity.java @@ -3,7 +3,6 @@ package org.fdroid.fdroid.views; import android.annotation.TargetApi; import android.content.Context; import android.content.Intent; -import android.graphics.Bitmap; import android.os.Build; import android.os.Bundle; import android.support.annotation.Nullable; @@ -16,18 +15,21 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; - import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; -import com.nostra13.universalimageloader.core.assist.ImageScaleType; - import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.R; +import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.data.App; import org.fdroid.fdroid.data.AppProvider; /** - * Full screen view of an apps screenshots to swipe through. + * Full screen view of an apps screenshots to swipe through. This will always + * download the image, even if the user has said not to use "unmetered" networks, + * e.g. WiFi. That is because the user has to click on the thumbnail in + * {@link org.fdroid.fdroid.AppDetails2} in order to bring up this activity. + * That makes it a specific request for that image, rather than regular + * background loading. */ public class ScreenShotsActivity extends AppCompatActivity { @@ -114,13 +116,9 @@ public class ScreenShotsActivity extends AppCompatActivity { public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - DisplayImageOptions displayImageOptions = new DisplayImageOptions.Builder() - .cacheInMemory(true) - .cacheOnDisk(true) - .imageScaleType(ImageScaleType.NONE) + DisplayImageOptions displayImageOptions = Utils.getDefaultDisplayImageOptionsBuilder() .showImageOnLoading(R.drawable.screenshot_placeholder) .showImageForEmptyUri(R.drawable.screenshot_placeholder) - .bitmapConfig(Bitmap.Config.RGB_565) .build(); View rootView = inflater.inflate(R.layout.activity_screenshots_page, container, false); diff --git a/app/src/main/java/org/fdroid/fdroid/views/ScreenShotsRecyclerViewAdapter.java b/app/src/main/java/org/fdroid/fdroid/views/ScreenShotsRecyclerViewAdapter.java index 1ce4aee02..a128f6d23 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/ScreenShotsRecyclerViewAdapter.java +++ b/app/src/main/java/org/fdroid/fdroid/views/ScreenShotsRecyclerViewAdapter.java @@ -1,20 +1,20 @@ package org.fdroid.fdroid.views; import android.content.Context; -import android.graphics.Bitmap; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; - import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; -import com.nostra13.universalimageloader.core.assist.ImageScaleType; - import org.fdroid.fdroid.R; +import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.data.App; +/** + * Loads and displays the small screenshots that are inline in {@link org.fdroid.fdroid.AppDetails2} + */ class ScreenShotsRecyclerViewAdapter extends RecyclerView.Adapter { private final String[] screenshots; private final DisplayImageOptions displayImageOptions; @@ -25,13 +25,9 @@ class ScreenShotsRecyclerViewAdapter extends RecyclerView.Adapter - *
  • app_list_item (see {@link StandardAppListItemController}
  • - *
  • updateable_app_list_status_item (see - * {@link org.fdroid.fdroid.views.updates.items.AppStatusListItemController}
  • - *
  • updateable_app_list_item (see - * {@link org.fdroid.fdroid.views.updates.items.UpdateableAppListItemController}
  • - *
  • installed_app_list_item (see {@link StandardAppListItemController}
  • + *
  • app_list_item (see {@link StandardAppListItemController}
  • + *
  • updateable_app_list_status_item (see + * {@link org.fdroid.fdroid.views.updates.items.AppStatusListItemController}
  • + *
  • updateable_app_list_item (see + * {@link org.fdroid.fdroid.views.updates.items.UpdateableAppListItemController}
  • + *
  • installed_app_list_item (see {@link StandardAppListItemController}
  • * - * + *

    * The state of the UI is defined in a dumb {@link AppListItemState} class, then applied to the UI * in the {@link #refreshView(App, AppUpdateStatus)} method. */ @@ -98,8 +95,6 @@ public abstract class AppListItemController extends RecyclerView.ViewHolder { @Nullable private final Button secondaryButton; - private final DisplayImageOptions displayImageOptions; - @Nullable private App currentApp; @@ -156,8 +151,6 @@ public abstract class AppListItemController extends RecyclerView.ViewHolder { cancelButton.setOnClickListener(onCancelDownload); } - displayImageOptions = Utils.getImageLoadingOptions().build(); - itemView.setOnClickListener(onAppClicked); } @@ -169,7 +162,7 @@ public abstract class AppListItemController extends RecyclerView.ViewHolder { public void bindModel(@NonNull App app) { currentApp = app; - ImageLoader.getInstance().displayImage(app.iconUrl, icon, displayImageOptions); + ImageLoader.getInstance().displayImage(app.iconUrl, icon, Utils.getRepoAppDisplayImageOptions()); // Figures out the current install/update/download/etc status for the app we are viewing. // Then, asks the view to update itself to reflect this status. @@ -193,7 +186,9 @@ public abstract class AppListItemController extends RecyclerView.ViewHolder { broadcastManager.registerReceiver(onStatusChanged, intentFilter); } - /** To be overridden if required */ + /** + * To be overridden if required + */ public boolean canDismiss() { return false; } @@ -214,6 +209,7 @@ public abstract class AppListItemController extends RecyclerView.ViewHolder { /** * Override to respond to the user swiping an app to dismiss it from the list. + * * @return Optionally return a description of what you did if it is not obvious to the user. It will be shown as * a {@link android.widget.Toast} for a {@link android.widget.Toast#LENGTH_SHORT} time. * @see #canDismiss() This must also be overriden and should return true. @@ -235,7 +231,7 @@ public abstract class AppListItemController extends RecyclerView.ViewHolder { /** * Queries the current state via {@link #getCurrentViewState(App, AppUpdateStatus)} * and then updates the relevant widgets depending on that state. - * + *

    * Should contain little to no business logic, this all belongs to * {@link #getCurrentViewState(App, AppUpdateStatus)}. * @@ -489,7 +485,8 @@ public abstract class AppListItemController extends RecyclerView.ViewHolder { intent.getParcelableExtra(Installer.EXTRA_USER_INTERACTION_PI); try { pendingIntent.send(); - } catch (PendingIntent.CanceledException ignored) { } + } catch (PendingIntent.CanceledException ignored) { + } } } }; @@ -503,8 +500,11 @@ public abstract class AppListItemController extends RecyclerView.ViewHolder { } } - /** To be overridden by subclasses if desired */ - protected void onSecondaryButtonPressed(@NonNull App app) { } + /** + * To be overridden by subclasses if desired + */ + protected void onSecondaryButtonPressed(@NonNull App app) { + } @SuppressWarnings("FieldCanBeLocal") private final View.OnClickListener onCancelDownload = new View.OnClickListener() { diff --git a/app/src/main/java/org/fdroid/fdroid/views/categories/AppCardController.java b/app/src/main/java/org/fdroid/fdroid/views/categories/AppCardController.java index b3c963da4..914285220 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/categories/AppCardController.java +++ b/app/src/main/java/org/fdroid/fdroid/views/categories/AppCardController.java @@ -18,7 +18,6 @@ import android.text.TextUtils; import android.view.View; import android.widget.ImageView; import android.widget.TextView; -import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.assist.FailReason; import com.nostra13.universalimageloader.core.listener.ImageLoadingListener; @@ -70,7 +69,6 @@ public class AppCardController extends RecyclerView.ViewHolder private App currentApp; private final Activity activity; - private final DisplayImageOptions displayImageOptions; public AppCardController(Activity activity, View itemView) { super(itemView); @@ -83,8 +81,6 @@ public class AppCardController extends RecyclerView.ViewHolder featuredImage = (FeatureImage) itemView.findViewById(R.id.featured_image); newTag = (TextView) itemView.findViewById(R.id.new_tag); - displayImageOptions = Utils.getImageLoadingOptions().build(); - itemView.setOnClickListener(this); } @@ -117,7 +113,7 @@ public class AppCardController extends RecyclerView.ViewHolder } } - ImageLoader.getInstance().displayImage(app.iconUrl, icon, displayImageOptions, this); + ImageLoader.getInstance().displayImage(app.iconUrl, icon, Utils.getRepoAppDisplayImageOptions(), this); if (featuredImage != null) { featuredImage.setColour(ContextCompat.getColor(activity, R.color.fdroid_blue)); @@ -133,7 +129,7 @@ public class AppCardController extends RecyclerView.ViewHolder // feature image to be loaded). if (!TextUtils.isEmpty(app.featureGraphic)) { featuredImage.loadImageAndDisplay(ImageLoader.getInstance(), - displayImageOptions, app.getFeatureGraphicUrl(activity)); + Utils.getRepoAppDisplayImageOptions(), app.getFeatureGraphicUrl(activity)); } } } @@ -162,7 +158,8 @@ public class AppCardController extends RecyclerView.ViewHolder Pair iconTransitionPair = Pair.create((View) icon, activity.getString(R.string.transition_app_item_icon)); - @SuppressWarnings("unchecked") // the right type is passed as 2nd varargs arg: Pair + // unchecked since the right type is passed as 2nd varargs arg: Pair + @SuppressWarnings("unchecked") Bundle b = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, iconTransitionPair).toBundle(); activity.startActivity(intent, b); } else { diff --git a/app/src/main/java/org/fdroid/fdroid/views/categories/CategoryController.java b/app/src/main/java/org/fdroid/fdroid/views/categories/CategoryController.java index b4ca76bdc..371623c8e 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/categories/CategoryController.java +++ b/app/src/main/java/org/fdroid/fdroid/views/categories/CategoryController.java @@ -5,7 +5,6 @@ import android.content.Context; import android.content.Intent; import android.content.res.Resources; import android.database.Cursor; -import android.graphics.Bitmap; import android.graphics.Color; import android.graphics.Rect; import android.os.Bundle; @@ -23,9 +22,9 @@ import android.widget.FrameLayout; import android.widget.TextView; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; -import com.nostra13.universalimageloader.core.assist.ImageScaleType; import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer; import org.fdroid.fdroid.R; +import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.data.AppProvider; import org.fdroid.fdroid.data.Schema; import org.fdroid.fdroid.views.apps.AppListActivity; @@ -67,11 +66,8 @@ public class CategoryController extends RecyclerView.ViewHolder implements Loade appCards.setAdapter(appCardsAdapter); appCards.addItemDecoration(new ItemDecorator(activity)); - displayImageOptions = new DisplayImageOptions.Builder() - .cacheInMemory(true) - .imageScaleType(ImageScaleType.NONE) + displayImageOptions = Utils.getDefaultDisplayImageOptionsBuilder() .displayer(new FadeInBitmapDisplayer(100, true, true, false)) - .bitmapConfig(Bitmap.Config.RGB_565) .build(); } diff --git a/app/src/main/java/org/fdroid/fdroid/views/swap/SwapAppsView.java b/app/src/main/java/org/fdroid/fdroid/views/swap/SwapAppsView.java index 78547c6be..143f067a0 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/swap/SwapAppsView.java +++ b/app/src/main/java/org/fdroid/fdroid/views/swap/SwapAppsView.java @@ -36,10 +36,7 @@ import android.widget.ListView; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; - -import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; - import org.fdroid.fdroid.BuildConfig; import org.fdroid.fdroid.R; import org.fdroid.fdroid.UpdateService; @@ -63,8 +60,6 @@ public class SwapAppsView extends ListView implements LoaderManager.LoaderCallbacks, SearchView.OnQueryTextListener { - private DisplayImageOptions displayImageOptions; - public SwapAppsView(Context context) { super(context); } @@ -113,8 +108,6 @@ public class SwapAppsView extends ListView implements // either reconnect with an existing loader or start a new one getActivity().getSupportLoaderManager().initLoader(LOADER_SWAPABLE_APPS, null, this); - displayImageOptions = Utils.getImageLoadingOptions().build(); - LocalBroadcastManager.getInstance(getActivity()).registerReceiver( pollForUpdatesReceiver, new IntentFilter(UpdateService.LOCAL_ACTION_STATUS)); @@ -354,7 +347,7 @@ public class SwapAppsView extends ListView implements nameView.setText(app.name); } - ImageLoader.getInstance().displayImage(app.iconUrl, iconView, displayImageOptions); + ImageLoader.getInstance().displayImage(app.iconUrl, iconView, Utils.getRepoAppDisplayImageOptions()); if (app.hasUpdates()) { btnInstall.setText(R.string.menu_upgrade);