android - Issue, how to save Image from View Pager -
i'm loading set of images server , displaying in viewpager. when hit save button, next image saved sd card , not exact image. . how handle this?? here code
public class photodetailsfragment extends superfragment implements onclicklistener { samplepageradapter adapter; private button sharebtn ; private albumbean photodata ; private button saveimagebtn ; private arraylist < string > photoslinks = new arraylist < string >() ; viewpager pager ; int currentpage=0; public zoomableimageview imageview ; public int page = 0 ; @ override public view oncreateview( layoutinflater inflater , viewgroup container , bundle savedinstancestate ) { return inflater.inflate( r.layout.photo_details_layout , container , false ) ; } @ override public void onactivitycreated( bundle savedinstancestate ) { // todo auto-generated method stub super.onactivitycreated( savedinstancestate ) ; pager = ( viewpager ) getactivity().findviewbyid( r.id.pager ) ; init( savedinstancestate ) ; } /** * init main components in layout */ private void init( bundle savedinstancestate ) { // todo auto-generated method stub if ( util.load( getactivity() , iaaconfig.key_gallery_last_pos ).length() > 0 ) { page = integer.parseint( util.load( getactivity() , iaaconfig.key_gallery_last_pos ) ) ; } else page = getarguments().getint( iaaconfig.key_gallery_last_pos ) ; photodata = ( albumbean ) getarguments().getserializable( iaaconfig.key_album_info ) ; photoslinks = photodata.getphotolinks() ; try { sharebtn = ( button ) getactivity().findviewbyid( r.id.share_btn ) ; sharebtn.setonclicklistener( ) ; saveimagebtn = ( button ) getactivity().findviewbyid( r.id.saveimagebtn ) ; saveimagebtn.setonclicklistener( ) ; } catch ( exception e ) { // todo: handle exception } adapter = new samplepageradapter(); pager.setadapter( new samplepageradapter() ) ; pager.setcurrentitem( page) ; //adapter.getcount()-1 } @ override public void onclick( view v ) { // todo auto-generated method stub switch ( v.getid() ) { case r.id.share_btn: util.sharetexturl( getactivity() , photoslinks.get( pager.getcurrentitem() ) ) ; break ; case r.id.saveimagebtn: //int t = adapter.getcount()-1; //string astring = integer.tostring(t); // pager.setcurrentitem(getitem(+1), true); util.savemyimage( imageview , getactivity() , pager.getcurrentitem()+"" ) ;//adapter.getcount().pager.getcurrentitem() //pager.setcurrentitem(pager.getcurrentitem()) break ; default: break ; } } private contentresolver getcontentresolver() { // todo auto-generated method stub return null; } private int getitem(int i) { // todo auto-generated method stub return pager.getcurrentitem() + i; } class samplepageradapter extends pageradapter { @ override public int getcount() { return photoslinks.size() ; } @ override public boolean isviewfromobject( view view , object object ) { return view == object ; } @ override public object instantiateitem( viewgroup container , int position ) { imageview = new zoomableimageview( getactivity() ) ; imageview.setdrawingcacheenabled( true ) ; imageview.builddrawingcache( true ) ; imageview.setmaxzoom( 10f ) ; imageview.destroydrawingcache(); try { picasso.with( getactivity() ).load( photoslinks.get( position ) ).into( imageview ) ; } catch ( exception e ) { // todo: handle exception } layoutparams imageparams = new layoutparams( layoutparams.match_parent , layoutparams.match_parent ) ; imageview.setlayoutparams( imageparams ) ; linearlayout layout = new linearlayout( getactivity() ) ; layout.setorientation( linearlayout.vertical ) ; layoutparams layoutparams = new layoutparams( layoutparams.match_parent , layoutparams.match_parent ) ; layout.setlayoutparams( layoutparams ) ; layout.addview( imageview ) ; container.addview( layout ) ; //pager.setcurrentitem(getitem(+1), true); return layout ; } @ override public int getitemposition( object object ) { // todo auto-generated method stub return super.getitemposition( object ) ; } @ override public void destroyitem( viewgroup container , int position , object object ) { container.removeview( ( linearlayout ) object ) ; //pager.removeview((view) object); } } /* * (non-javadoc) * * @see android.app.fragment#onsaveinstancestate(android.os.bundle) */ @ override public void onsaveinstancestate( bundle outstate ) { // todo auto-generated method stub super.onsaveinstancestate( outstate ) ; //outstate.putint("pageitem", pager.getcurrentitem()); util.save( getactivity() , iaaconfig.key_gallery_last_pos , pager.getcurrentitem() + "" ) ; }
} , here savemyimage method:
public static void savemyimage( imageview imageview , context context , string imagename ) { try { bitmap bmimg = bitmap.createbitmap( imageview.getdrawingcache() ) ; imageview.setdrawingcacheenabled( false ) ; imageview.destroydrawingcache(); string fullimagepath = android.os.environment.getexternalstoragedirectory().tostring() + "/" + context.getstring( r.string.app_name ) ; file filename ; file file = new file( fullimagepath ) ; if ( !file.exists() ) file.mkdirs() ; filename = new file( file.getabsolutepath() + "/" + imagename + ".jpg" ) ; fileoutputstream out = new fileoutputstream( filename ) ; bmimg.compress( bitmap.compressformat.png , 90 , out ) ; out.flush() ; out.close() ; contentvalues image = getimagecontent( filename , context ) ; uri result = context.getcontentresolver().insert( mediastore.images.media.external_content_uri , image ) ; toast.maketext( context , "file saved in " + filename , toast.length_long ).show() ; trace( "file saved in " + filename ) ; } catch ( exception e ) { e.printstacktrace() ; } }
Comments
Post a Comment