Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(138)

Unified Diff: samples/github/android/GithubSample/app/src/main/java/com/google/dartino/githubsample/ImageLoader.java

Issue 2035023003: Remove service-compiler related code. (Closed) Base URL: git@github.com:dartino/sdk.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: samples/github/android/GithubSample/app/src/main/java/com/google/dartino/githubsample/ImageLoader.java
diff --git a/samples/github/android/GithubSample/app/src/main/java/com/google/dartino/githubsample/ImageLoader.java b/samples/github/android/GithubSample/app/src/main/java/com/google/dartino/githubsample/ImageLoader.java
deleted file mode 100644
index 78f7bc17d22e75d48f5e6c198bacb05f367081da..0000000000000000000000000000000000000000
--- a/samples/github/android/GithubSample/app/src/main/java/com/google/dartino/githubsample/ImageLoader.java
+++ /dev/null
@@ -1,206 +0,0 @@
-// Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE.md file.
-
-package com.google.dartino.githubsample;
-
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
-import android.os.AsyncTask;
-import android.os.Looper;
-import android.util.LruCache;
-import android.widget.ImageView;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.ref.WeakReference;
-import java.net.URL;
-
-
-public class ImageLoader {
-
- private LruCache<String, Bitmap> imageCache;
- private BitmapFormatter bitmapFormatter;
- private Bitmap defaultBitmap;
-
- private ImageLoader(BitmapFormatter bitmapFormatter, Bitmap defaultBitmap) {
- this.bitmapFormatter = bitmapFormatter;
- this.defaultBitmap = defaultBitmap;
- imageCache = new LruCache<String, Bitmap>(100);
- }
-
- public ImageLoader(Bitmap defaultBitmap) {
- this(new BitmapFormatter() {
- @Override
- public Bitmap formatBitmap(Bitmap bitmap) {
- return bitmap;
- }
- }, defaultBitmap);
- }
-
- public static ImageLoader createWithBitmapFormatter(BitmapFormatter bitmapFormatter,
- Bitmap defaultBitmap) {
- return new ImageLoader(bitmapFormatter, defaultBitmap);
- }
-
- public void loadImageFromUrl(
- ImageView imageView, String url, int imageViewWidth, int imageViewHeight) {
- // This method should be called on the UI thread since it is setting the drawable on imageView.
- assert (Looper.getMainLooper() == Looper.myLooper());
-
- if (url == null || url.isEmpty()) {
- imageView.setImageBitmap(defaultBitmap);
- return;
- }
-
- Bitmap bitmap = getFromCache(url);
- if (bitmap != null) {
- cancelPotentialWork(url, imageView);
- imageView.setImageBitmap((Bitmap) bitmap);
- } else {
- if (cancelPotentialWork(url, imageView)) {
- final BitmapDownloadTask task =
- new BitmapDownloadTask(imageView, imageViewWidth, imageViewHeight);
- final AsyncDrawable asyncDrawable =
- new AsyncDrawable(imageView.getResources(), defaultBitmap, task);
- imageView.setImageDrawable(asyncDrawable);
- task.execute(url);
- }
- }
- }
-
- public interface BitmapFormatter {
-
- Bitmap formatBitmap(Bitmap bitmap);
- }
-
- private Bitmap getFromCache(String key) {
- synchronized (imageCache) {
- return imageCache.get(key);
- }
- }
-
- private void putInCache(String key, Bitmap bitmap) {
- synchronized (imageCache) {
- imageCache.put(key, bitmap);
- }
- }
-
- // Returns true if no task is associated with the imageView or if a task is already downloading a
- // different bitmap in which case the existing task is canceled.
- private boolean cancelPotentialWork(String url, ImageView imageView) {
- final BitmapDownloadTask bitmapDownloadTask = getDownloadTask(imageView);
-
- if (bitmapDownloadTask != null) {
- final String bitmapUrl = bitmapDownloadTask.url;
- if (bitmapUrl != null && bitmapUrl.equals(url)) return false;
- bitmapDownloadTask.cancel(true);
- }
- return true;
- }
-
- private BitmapDownloadTask getDownloadTask(ImageView imageView) {
- if (imageView != null) {
- final Drawable drawable = imageView.getDrawable();
- if (drawable instanceof AsyncDrawable) {
- final AsyncDrawable asyncDrawable = (AsyncDrawable) drawable;
- return asyncDrawable.getBitmapWorkerTask();
- }
- }
- return null;
- }
-
- static class AsyncDrawable extends BitmapDrawable {
-
- private final WeakReference<BitmapDownloadTask> bitmapWorkerTaskReference;
-
- public AsyncDrawable(Resources res, Bitmap bitmap,
- BitmapDownloadTask bitmapDownloadTask) {
- super(res, bitmap);
- bitmapWorkerTaskReference =
- new WeakReference<BitmapDownloadTask>(bitmapDownloadTask);
- }
-
- public BitmapDownloadTask getBitmapWorkerTask() {
- return bitmapWorkerTaskReference.get();
- }
- }
-
- private class BitmapDownloadTask extends AsyncTask<String, Void, Bitmap> {
-
- public String url;
- public WeakReference<ImageView> imageViewReference;
- public int imageViewHeight;
- public int imageViewWidth;
-
- public BitmapDownloadTask(ImageView view, int imageViewWidth, int imageViewHeight) {
- imageViewReference = new WeakReference<ImageView>(view);
- this.imageViewHeight = imageViewHeight;
- this.imageViewWidth = imageViewWidth;
- }
-
- @Override
- protected Bitmap doInBackground(String... params) {
- url = params[0];
- Bitmap bitmap = null;
-
- BitmapFactory.Options options = new BitmapFactory.Options();
- options.inJustDecodeBounds = true;
- try (InputStream sizeInputStream = (InputStream) new URL(url).getContent();
- InputStream bitmapInputStream = (InputStream) new URL(url).getContent()) {
-
- BitmapFactory.decodeStream(sizeInputStream, null, options);
- options.inSampleSize = calculateInSampleSize(options, imageViewWidth, imageViewHeight);
- options.inJustDecodeBounds = false;
- bitmap = BitmapFactory.decodeStream(bitmapInputStream, null, options);
-
- Bitmap formattedBitmap = bitmapFormatter.formatBitmap(bitmap);
- putInCache(url, formattedBitmap);
- return formattedBitmap;
- } catch (IOException e) {
- e.printStackTrace();
- return defaultBitmap;
- }
- }
-
- private int calculateInSampleSize(
- BitmapFactory.Options options, int requiredWidth, int requiredHeight) {
- // Raw height and width of image
- final int height = options.outHeight;
- final int width = options.outWidth;
-
- if (height > requiredHeight || width > requiredWidth) {
-
- // Calculate ratios of height and width to requested height and width
- final int heightRatio = Math.round((float) height / (float) requiredHeight);
- final int widthRatio = Math.round((float) width / (float) requiredWidth);
-
- // Choose the smallest ratio as inSampleSize value, this will guarantee
- // a final image with both dimensions larger than or equal to the
- // requested height and width.
- return heightRatio < widthRatio ? heightRatio : widthRatio;
- }
-
- return 1;
- }
-
- @Override
- protected void onPostExecute(Bitmap bitmap) {
-
- if (isCancelled()) {
- return;
- }
-
- if (imageViewReference != null && bitmap != null) {
- final ImageView imageView = imageViewReference.get();
- final BitmapDownloadTask task = getDownloadTask(imageView);
- if (this == task && imageView != null) {
- imageView.setImageBitmap(bitmap);
- }
- }
- }
- }
-}

Powered by Google App Engine
This is Rietveld 408576698