问题
Hello everyone i have an issue with the progress bar. I tried to make a gallery view, all the images shown in grid view.but the issue is that, when all the images is loaded the progress bar did not gone, check the code I am using Rotate-loading as a Progress bar
Updated
public class ImageAdapter extends BaseAdapter {
private Context mContext;
ProgressDialog progressDialog;
RotateLoading rotateLoading;
int count;
public ImageAdapter(Context c) {
mContext = c;}
public int getCount() {
return mThumbIds.length;
}
@Override
public String getItem(int position) {
return mThumbIds[position];
}
public long getItemId(int position) {
return 0;
}
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
convertView= LayoutInflater.from(mContext).inflate(R.layout.image_gallery,parent,false);
imageView=(ImageView)convertView.findViewById(R.id.imageView2);
imageView.setLayoutParams(new RelativeLayout.LayoutParams(380,480));
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
// rotateLoading=(RotateLoading)convertView.findViewById(R.id.rotateloading);
progressDialog=ProgressDialog.show(mContext,"Loading Data","Please wait.....",false,false);
} else {
imageView = (ImageView) convertView.findViewById(R.id.imageView2);
}
String url = null;
url=getItem(position);
Glide.with(mContext)
.load(url)
.thumbnail(0.5f)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.placeholder(android.R.drawable.progress_indeterminate_horizontal)
.centerCrop()
.listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
// rotateLoading.setVisibility(View.INVISIBLE);
// rotateLoading.stop();
progressDialog.dismiss();
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
//rotateLoading.setVisibility(View.INVISIBLE);
//rotateLoading.stop();
progressDialog.dismiss();
return false;
}
})
.crossFade()
.into(imageView);
return convertView;
}
// Keep all Images in array
public String[] mThumbIds = {
"http://idealphotography.biz/wp-content/uploads/2016/06/Wide-wallpaper-nature-480x800-In-Wallpaper-HD-1366x768-with-wallpaper-nature-480x800-Download-HD-Wallpaper.jpg",
"http://greenywallpapers.com/wallpapers/10/275050-nature-wallpapers-720x1280.jpg",
"https://idealphotography.biz/wp-content/uploads/2016/06/Best-wallpaper-nature-480x800-For-Wallpapers-Image-with-wallpaper-nature-480x800-Download-HD-Wallpaper.jpg",
"https://idealphotography.biz/wp-content/uploads/2016/06/Best-wallpaper-nature-480x800-In-Windows-Wallpaper-Themes-with-wallpaper-nature-480x800-Download-HD-Wallpaper.jpg",
"https://idealphotography.biz/wp-content/uploads/2016/06/Highres-wallpaper-nature-480x800-About-Windows-7-Wallpaper-with-wallpaper-nature-480x800-Download-HD-Wallpaper.jpg",
"http://freewallpaper-background.com/wp-content/uploads/2014/11/M-3.jpg",
"http://naturewallpaperfree.com/mobile/sky/nature-wallpaper-480x800-127-96fbd452.jpg",
};
}
this is xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="380dp"
android:layout_height="380dp"
android:id="@+id/imageView2"
/>
<com.victor.loading.rotate.RotateLoading
android:id="@+id/rotateloading"
android:layout_width="80dp"
android:layout_height="80dp"
app:loading_width="5dp"
android:visibility="visible"
app:loading_color="#ffffff"
android:layout_centerInParent="true"/>
</RelativeLayout>
[![Check the image][1]][1]
in the image the picture loads but the progress bar did not stops and invisible.
Please solve the issue.
[1]: http://i.stack.imgur.com/2Vqyp.jpg
回答1:
update your xml file
<com.victor.loading.rotate.RotateLoading
android:id="@+id/rotateloading"
android:layout_width="80dp"
android:layout_height="80dp"
app:loading_width="5dp"
app:loading_color="#ffffff"
android:layout_centerInParent="true"
android:visibility="invisible"/>
and in your getView() method,
rotateLoading.start();
rotateLoading.setVisibility(View.VISIBLE);
Glide.with(mContext)
.load(url)
.thumbnail(0.5f)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.fitCenter()
.listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
rotateLoading.setVisibility(View.INVISIBLE);
rotateLoading.stop();
return false;
}
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
rotateLoading.setVisibility(View.INVISIBLE);
rotateLoading.stop();
return false;
}
})
.crossFade()
.into(imageView);
回答2:
I created a library that shows a progress over an imageview: PowerfulImageView.
Import it, adding to gradle this line
compile 'com.stefanosiano:powerlessimageview:0.3.1'
Then change your xml with this:
<com.stefanosiano.powerfulimageview.PowerfulImageView
android:layout_width="380dp"
android:layout_height="380dp"
android:id="@+id/imageView2"
app:piv_progress_mode="circular" />
Then change your getView method to:
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
PowerfulImageView imageView;
if (convertView == null) {
convertView= LayoutInflater.from(mContext).inflate(R.layout.image_gallery,parent,false);
imageView=(PowerfulImageView)convertView.findViewById(R.id.imageView2);
imageView.setLayoutParams(new RelativeLayout.LayoutParams(380,480));
imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
} else {
imageView = (PowerfulImageView) convertView.findViewById(R.id.imageView2);
}
imageView.changeProgressMode(PivProgressMode.CIRCULAR);
String url = null;
url=getItem(position);
Glide.with(mContext)
.load(url)
.thumbnail(0.5f)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.placeholder(android.R.drawable.progress_indeterminate_horizontal)
.centerCrop()
.crossFade()
.into(imageView);
return convertView;
}
Let me know if everything works fine :)
来源:https://stackoverflow.com/questions/39263403/progress-bar-set-visiblity-using-grid-view-images-gallery