A. GridView Display picture plus progress box:
in the Universal-image-loader framework can make loading pictures easier, let's look at how to use the add-on progress bar in the GridView.
:
Main interface:
<span style= "FONT-SIZE:18PX;" >public class Gridactivity extends Activity{private GridView grid;public static final string[] IMAGES = new string[] {" Http://img.dapixie.com/uploads/allimg/111105/1-111105145231.jpg "," http://img3.3lian.com/2014/c2/61/d/1.jpg "," Http://img3.3lian.com/2014/c2/61/d/2.jpg "," http://img3.3lian.com/2014/c2/61/d/3.jpg "," http://img3.3lian.com/ 2014/c2/61/d/4.jpg "," http://img3.3lian.com/2014/c2/61/d/5.jpg "," http://img3.3lian.com/2014/c2/61/d/6.jpg "," Http://img3.3lian.com/2014/c2/61/d/7.jpg "," http://img3.3lian.com/2014/c2/61/d/8.jpg "," http://img3.3lian.com/ 2014/c2/61/d/9.jpg "," http://img3.3lian.com/2014/c2/61/d/10.jpg "," http://img3.3lian.com/2014/c2/61/d/11.jpg "," Http://img3.3lian.com/2014/c2/61/d/12.jpg "}; @Overrideprotected void OnCreate (Bundle savedinstancestate) { Super.oncreate (savedinstancestate); Setcontentview (r.layout.grid_activity); Grid = (GridView) Findviewbyid ( R.id.grid); Grid.setadapter (new Imageadapter (This));} @Overrideprotected void OnDestroy () {super.OnDestroy (); Imageloader.getinstance (). Clearmemorycache ();//Empty Cache Imageloader.getinstance (). Cleardiskcache ();// Empty cache Imageloader.getinstance (). Stop ();//stop}private static class Imageadapter extends Baseadapter {private static final string[] Image_urls = gridactivity.images;private layoutinflater inflater;private displayimageoptions Options;I Mageadapter (Context context) {Inflater = Layoutinflater.from (context); options = new Displayimageoptions.builder (). Showimageonloading (r.drawable.ic_stub). Showimageforemptyuri (R.drawable.ic_empty). ShowImageOnFail (R.drawable.ic _error). Cacheinmemory (True). Cacheondisk (True). Considerexifparams (True). Bitmapconfig (Bitmap.Config.RGB_565). Build ();} @Overridepublic int GetCount () {return image_urls.length;} @Overridepublic Object getItem (int position) {return null;} @Overridepublic long Getitemid (int position) {return position;} @Overridepublic view GetView (int position, view Convertview, ViewGroup parent) {final Viewholder holder; View view = convertview;if (view = = Null) {view = Inflater.inflate (R.layout.grid_listview_item, parent, false); holder = new Viewholder (); Assert view! = Null;h Older.imageview = (ImageView) View.findviewbyid (r.id.image); Holder.progressbar = (ProgressBar) View.findviewbyid ( r.id.progress); View.settag (holder);} else {holder = (Viewholder) View.gettag ();} Imageloader.getinstance (). DisplayImage (Image_urls[position], Holder.imageview, options, new Simpleimageloadinglistener () {@Overridepublic void onloadingstarted (String imageuri, view view) {// Set the progress bar to 0holder.progressbar.setprogress (0);//Show holder.progressBar.setVisibility (view.visible) when starting the download;} @Overridepublic void onloadingfailed (String imageuri, view view, Failreason Failreason) {// Download failed to hide holder.progressBar.setVisibility (View.gone);} @Overridepublic void Onloadingcomplete (String imageuri, view view, Bitmap loadedimage) {// Download failed to hide holder.progressBar.setVisibility (View.gone);}, new Imageloadingprogresslistener () {@Overridepublic void Onprogressupdate (String Imageuri, view view, int CurreNT, int total) {//current Current progress, overall progress holder.progressBar.setProgress (Math.Round (100.0f * current/total));}); return view;}} Static class Viewholder {ImageView ImageView; ProgressBar ProgressBar;}} </span>
Main interface layout:
<span style= "FONT-SIZE:18PX;" ><?xml version= "1.0" encoding= "Utf-8"? ><linearlayout xmlns:android= "http://schemas.android.com/apk/ Res/android " android:layout_width=" match_parent " android:layout_height=" match_parent " android:o rientation= "vertical" > <gridviewandroid:id= "@+id/grid" android:layout_width= "Match_parent" Android: layout_height= "match_parent" android:gravity= "center" android:horizontalspacing= "4dip" android:numcolumns= "3" Android:stretchmode= "ColumnWidth" android:verticalspacing= "4dip" android:padding= "4dip"/></linearlayout ></span>
Grid_item layout:
<span style= "FONT-SIZE:18PX;" ><?xml version= "1.0" encoding= "Utf-8"? ><framelayout xmlns:android= "Http://schemas.android.com/apk/res /android "android:layout_width=" match_parent "android:layout_height=" 120dip "><imageviewandroid:id=" @+id/ Image "Android:layout_width=" match_parent "android:layout_height=" 120dip "android:adjustviewbounds=" true "Android: contentdescription= "@string/descr_image" android:scaletype= "Centercrop"/><progressbarandroid:id= "@+id/ Progress "android:layout_width=" Match_parent "android:layout_height=" Wrap_content "android:indeterminate=" false " android:max= "android:layout_gravity=" Bottom "style=" @style/progressbarstyle "/></framelayout></ Span>
Progress bar Style:
<span style= "FONT-SIZE:18PX;" ><style name= "Progressbarstyle" parent= "@android: Style/widget.holo.progressbar.horizontal"/></span >
Imageloader Configuration:
<span style= "FONT-SIZE:18PX;" >public class MyApp extends application {@Overridepublic void OnCreate () {super.oncreate (); InitImageLoader1 ( Getapplicationcontext ());} /* Custom configuration */public static void Initimageloader (context context) {Imageloaderconfiguration.builder config = new Imageloade Rconfiguration.builder (context); config.threadpoolsize (3);//Line Cheng Chinega the number of config.threadpriority (thread.norm_priority -2); Config.denycacheimagemultiplesizesinmemory ()//Do not cache multiple dimensions of a picture in memory Config.diskcachefilenamegenerator (new Md5filenamegenerator ());//will save the URI name with Md5config.diskcachesize (50 * 1024 * 1024); Mibconfig.tasksprocessingorder (QUEUEPROCESSINGTYPE.LIFO); Config.writedebuglogs ();//Remove for release app// Initialize Imageloader using Imageloader.getinstance (). Init (Config.build ());} /* * Default configuration, generally no special requirements when the use of the default is good. */public static void InitImageLoader1 (context context) {//create default imageloader configuration Parameters imageloaderconfiguration Config = Imageloaderconfiguration.createdefault (context);//Initialize Imageloader use ImageloadeR.getinstance (). init (configuration);}} </span>
This example continues to be written from the previous article and continues to be written in its project.
If you want to stop loading in the slide, and then continue loading the picture after you stop swiping, Universal-image-loader also provides this function, Pauseonscrolllistener this class is listening.
Listview.setonscrolllistener (New Pauseonscrolllistener (Imageloader.getinstance (), Pauseonscroll, pauseOnFling));
Pauseonscrolllistener The first parameter is the picture loading object Imageloader, the second is to control whether to pause the loading of the picture during the sliding process, if you need to pause the true on the line, the third parameter controls the fierce sliding interface when the picture is loaded.
Android Universal-image-loader Framework Learning (bottom)