Use Android Universal Image Loader library for loading images

This commit is contained in:
YuviPanda 2013-02-02 13:31:27 +05:30
parent 6c7997fdfa
commit fe47b00081
3 changed files with 50 additions and 2 deletions

View file

@ -35,6 +35,11 @@
<groupId>de.akquinet.android.androlog</groupId>
<artifactId>androlog</artifactId>
</dependency>
<dependency>
<groupId>com.nostra13.universalimageloader</groupId>
<artifactId>universal-image-loader</artifactId>
<version>1.7.1</version>
</dependency>
</dependencies>
<build>

View file

@ -1,15 +1,21 @@
package org.wikimedia.commons;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringWriter;
import java.net.URI;
import javax.xml.transform.*;
import android.accounts.*;
import android.app.Application;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.download.ImageDownloader;
import org.mediawiki.api.*;
import org.w3c.dom.Node;
import org.wikimedia.commons.auth.WikiAccountAuthenticator;
@ -39,6 +45,21 @@ public class CommonsApplication extends Application {
return dbOpenHelper;
}
public class ContentUriImageDownloader extends ImageDownloader {
@Override
protected InputStream getStreamFromNetwork(URI uri) throws IOException {
return super.getStream(uri); // Pass back to parent code, which handles http, https, etc
}
@Override
protected InputStream getStreamFromOtherSource(URI imageUri) throws IOException {
if(imageUri.getScheme().equals("content")) {
return getContentResolver().openInputStream(Uri.parse(imageUri.toString()));
}
throw new RuntimeException("Not a content URI: " + imageUri);
}
}
@Override
public void onCreate() {
@ -47,6 +68,11 @@ public class CommonsApplication extends Application {
// Fire progress callbacks for every 3% of uploaded content
System.setProperty("in.yuvi.http.fluent.PROGRESS_TRIGGER_THRESHOLD", "3.0");
api = createMWApi();
ImageLoaderConfiguration imageLoaderConfiguration = new ImageLoaderConfiguration.Builder(getApplicationContext())
.imageDownloader(new ContentUriImageDownloader()).build();
ImageLoader.getInstance().init(imageLoaderConfiguration);
}
public MWApi getApi() {

View file

@ -1,5 +1,6 @@
package org.wikimedia.commons.contributions;
import android.graphics.Bitmap;
import android.net.Uri;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
@ -17,6 +18,13 @@ import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.assist.ImageLoadingListener;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import org.wikimedia.commons.ImageLoaderTask;
import org.wikimedia.commons.R;
import org.wikimedia.commons.UploadService;
@ -50,8 +58,9 @@ public class ContributionsActivity extends AuthenticatedActivity implements Load
ImageView image = (ImageView)view.findViewById(R.id.contributionImage);
TextView title = (TextView)view.findViewById(R.id.contributionTitle);
ImageLoaderTask imageLoader = new ImageLoaderTask(image);
imageLoader.execute(Uri.parse(cursor.getString(COLUMN_LOCALURI)));
Uri imageUri = Uri.parse(cursor.getString(COLUMN_LOCALURI));
ImageLoader.getInstance().displayImage(imageUri.toString(), image, contributionDisplayOptions);
title.setText(cursor.getString(COLUMN_FILENAME));
@ -60,8 +69,11 @@ public class ContributionsActivity extends AuthenticatedActivity implements Load
private LocalBroadcastManager localBroadcastManager;
private ListView contributionsList;
private ContributionAdapter contributionsAdapter;
private DisplayImageOptions contributionDisplayOptions;
private String[] broadcastsToReceive = {
UploadService.INTENT_CONTRIBUTION_STATE_CHANGED
};
@ -100,6 +112,11 @@ public class ContributionsActivity extends AuthenticatedActivity implements Load
@Override
protected void onAuthCookieAcquired(String authCookie) {
contributionDisplayOptions = new DisplayImageOptions.Builder().cacheInMemory()
.imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2)
.displayer(new FadeInBitmapDisplayer(300))
.resetViewBeforeLoading().build();
Cursor allContributions = getContentResolver().query(ContributionsContentProvider.BASE_URI, CONTRIBUTIONS_PROJECTION, CONTRIBUTION_SELECTION, null, CONTRIBUTION_SORT);
contributionsAdapter = new ContributionAdapter(this, allContributions, 0);
contributionsList.setAdapter(contributionsAdapter);