android - Combining CoverFlow and Universal Image Loader -
i'm using fancycoverflow , universalimageloader display custom 3d gallery :d below picture. problem it's not showing images when downloaded unless swipe between gallery pictures , picture hide screen , when appears next time it's showing image in sample of universalimageloader downloaded image showing right after download.
here getview code adapter :
public view getview(int position, view view, viewgroup parent) { roundedimageview photo = (roundedimageview) view; if (photo == null) { photo = (roundedimageview) inflater.inflate(r.layout.row_gallery_latest_issue_item, parent, false); } try { system.out.println("test good"); imageloaderhelper.configurecacheableimage(mcontext, photo, latestbook.get(position).getimageurl(), r.drawable.avatar_issue, null); } catch (nullpointerexception e) { photo.setimageresource(r.drawable.avatar_issue); e.printstacktrace(); } return createreflectedimages(photo); } it's same universalimageloader sample expect have trycatche , createreflectedimage ( make our imageview reflective )
, , 1 more thing imageloaderhelper :
public class imageloaderhelper { public static void configurecacheableimage(context context, imageview imageview , string imageurl, integer defaultimageresourceid , imageloadinglistener imageloadinglistener) { imageloader imageloader = imageloader.getinstance(); displayimageoptions.builder builder = new displayimageoptions.builder(); builder.displayer( new simplebitmapdisplayer()) .cacheondisc(true) .cacheinmemory(true) .resetviewbeforeloading(true) .imagescaletype(imagescaletype.in_sample_int) .bitmapconfig(bitmap.config.rgb_565); if (defaultimageresourceid != null) builder.showimageonfail(defaultimageresourceid).showimageforemptyuri(defaultimageresourceid).showstubimage(defaultimageresourceid); if (!imageloader.isinited()) imageloader.init(imageloaderconfiguration.createdefault(context)); imageloader.displayimage(imageurl, imageview, builder.build(), imageloadinglistener); } }

update :
after day debugging found clue problem adapter don't know how resolve !
here code of createreflectedimages() :
public imageview createreflectedimages(roundedimageview image) { roundeddrawable drawable = (roundeddrawable) image.getdrawable(); bitmap originalimage = drawable.tobitmap(); int width = originalimage.getwidth(); int height = originalimage.getheight(); matrix matrix = new matrix(); matrix.prescale(1, -1); bitmap reflectionimage = bitmap.createbitmap(originalimage, 0, height / 2, width, height / 2, matrix, false); bitmap bitmapwithreflection = bitmap.createbitmap(width, (height + height / 2), config.argb_8888); canvas canvas = new canvas(bitmapwithreflection); canvas.drawbitmap(originalimage, 0, 0, null); canvas.drawbitmap(reflectionimage, 0, height, null); paint paint = new paint(); lineargradient shader = new lineargradient(0, height, 0, bitmapwithreflection.getheight() , 0x70ffffff, 0x00ffffff, tilemode.clamp); paint.setshader(shader); paint.setxfermode(new porterduffxfermode(mode.dst_in)); canvas.drawrect(0, height, width, bitmapwithreflection.getheight() , paint); roundedimageview imageview = new roundedimageview(mcontext); imageview.setimagebitmap(bitmapwithreflection); imageview.setlayoutparams(new imagegallery3d.layoutparams(generalhelper.dp(180), generalhelper.dp(240)));//width , height of image return imageview; }
the problem have 2 separate instances of imageview floating around. 1 created in getview, , second created in createreflectedimage. basically, when image finishes downloading, new imageview has replaced , downloaded image loaded 1 no longer visible (or possibly exists). reason why loads correctly second time (after scrolling offscreen) latency lower since being loaded memory not off web or wherever, when roundeddrawable drawable = (roundeddrawable) image.getdrawable(); has image want, rather placeholder!
public view getview(int position, view view, viewgroup parent) { roundedimageview photo = (roundedimageview) view; ... /* *passing first instance of photo imageloaderhelper */ imageloaderhelper.configurecacheableimage(mcontext, photo, latestbook.get(position).getimageurl(), r.drawable.avatar_issue, null); ... // //returns new instance of roundedimageview imageloader not aware of adapter // return createreflectedimages(photo); } public imageview createreflectedimages(roundedimageview image) { ... roundedimageview imageview = new roundedimageview(mcontext); imageview.setimagebitmap(bitmapwithreflection); imageview.setlayoutparams(new imagegallery3d.layoutparams(generalhelper.dp(180), generalhelper.dp(240)));//width , height of image //returning new instance of imageview return imageview; } instead of returning imageview in createreflectedimages, return "image". implement callback pass in imageloaderhelper calls createreflectedimages after image has been loaded apply effect.
Comments
Post a Comment