Show loading progress for images in detail view

This commit is contained in:
YuviPanda 2013-02-23 16:47:13 +05:30
parent b6400139ae
commit 7f1ab39683
2 changed files with 50 additions and 1 deletions

View file

@ -6,11 +6,27 @@
android:layout_height="fill_parent"
android:background="@android:color/background_dark"
>
<ProgressBar android:id="@+id/mediaDetailImageLoading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:indeterminate="true"
android:visibility="visible"
/>
<ImageView android:id="@+id/mediaDetailImageFailed"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="center"
android:src="@android:drawable/ic_menu_close_clear_cancel"
android:visibility="gone"
/>
<ImageView android:id="@+id/mediaDetailImage"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="fitCenter"
android:visibility="gone"
/>
<RelativeLayout

View file

@ -1,16 +1,21 @@
package org.wikimedia.commons.media;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.actionbarsherlock.app.SherlockFragment;
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.ImageLoadingListener;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.assist.SimpleImageLoadingListener;
import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;
import org.wikimedia.commons.Media;
import org.wikimedia.commons.R;
@ -29,6 +34,8 @@ public class MediaDetailFragment extends SherlockFragment {
private ImageView image;
private TextView title;
private ProgressBar loadingProgress;
private ImageView loadingFailed;
@Override
@ -45,8 +52,34 @@ public class MediaDetailFragment extends SherlockFragment {
View view = inflater.inflate(R.layout.fragment_media_detail, container, false);
image = (ImageView) view.findViewById(R.id.mediaDetailImage);
title = (TextView) view.findViewById(R.id.mediaDetailTitle);
loadingProgress = (ProgressBar) view.findViewById(R.id.mediaDetailImageLoading);
loadingFailed = (ImageView) view.findViewById(R.id.mediaDetailImageFailed);
String actualUrl = TextUtils.isEmpty(media.getImageUrl()) ? media.getLocalUri().toString() : media.getThumbnailUrl(640);
ImageLoader.getInstance().displayImage(actualUrl, image, displayOptions);
ImageLoader.getInstance().displayImage(actualUrl, image, displayOptions, new ImageLoadingListener() {
public void onLoadingStarted() {
loadingProgress.setVisibility(View.VISIBLE);
}
public void onLoadingFailed(FailReason failReason) {
loadingProgress.setVisibility(View.GONE);
loadingFailed.setVisibility(View.VISIBLE);
}
public void onLoadingComplete(Bitmap bitmap) {
loadingProgress.setVisibility(View.GONE);
loadingFailed.setVisibility(View.GONE);
image.setVisibility(View.VISIBLE);
}
public void onLoadingCancelled() {
// wat?
throw new RuntimeException("Image loading cancelled. But why?");
}
});
title.setText(Utils.displayTitleFromTitle(media.getFilename()));
return view;