Android长按imageview把图片保存到本地的实例代码
工具类
之前用
AsyncTask
现在改用rxJava
publicclassSaveImageUtils{ publicstaticvoidimageSave(finalImageViewimageView,finalintid){ Observable .create(newObservable.OnSubscribe(){ @Override publicvoidcall(Subscribersub){ sub.onNext(imageView); } } ).subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(newMySubscriber (){ @Override publicvoidonNext(ImageViewimageView){ FileimageFile=newFile(ActivityUtils.ImagePath(),id+".jpg"); FileOutputStreamoutStream=null; try{ outStream=newFileOutputStream(imageFile); Bitmapimage=imageView.getDrawingCache(); image.compress(Bitmap.CompressFormat.JPEG,100,outStream); outStream.flush(); outStream.close(); Toast.makeText(UIUtils.getContext(),UIUtils.getString(R.string.save_picture_success),Toast.LENGTH_LONG).show(); }catch(IOExceptione){ e.printStackTrace(); onError(e); } } @Override publicvoidonError(Throwablee){ Toast.makeText(UIUtils.getContext(),UIUtils.getString(R.string.save_picture_failed),Toast.LENGTH_LONG).show(); } }); } }
MySubscriber
publicclassMySubscriberextendsSubscriber { @Override publicvoidonStart(){ super.onStart(); } @Override publicvoidonCompleted(){ } @Override publicvoidonError(Throwablee){ } @Override publicvoidonNext(Tt){ } } //不建议使用了 packagecom.app.mly.utils; importandroid.app.Activity; importandroid.graphics.Bitmap; importandroid.os.AsyncTask; importandroid.os.Environment; importandroid.widget.ImageView; importandroid.widget.Toast; importcom.fengche.android.mly.R; importjava.io.File; importjava.io.FileOutputStream; /** *Createdbyyon2016/1/14. */ publicclassSaveImageUtilsextendsAsyncTask { ActivitymActivity; ImageViewmImageView; publicSaveImageUtils(Activityactivity,ImageViewimageView){ this.mImageView=imageView; this.mActivity=activity; } @Override protectedStringdoInBackground(Bitmap...params){ Stringresult=mActivity.getResources().getString(R.string.save_picture_failed); try{ Stringsdcard=Environment.getExternalStorageDirectory().toString(); Filefile=newFile(sdcard+"/123"); if(!file.exists()){ file.mkdirs(); } FileimageFile=newFile(file.getAbsolutePath(),"命名"+".jpg"); FileOutputStreamoutStream=null; outStream=newFileOutputStream(imageFile); Bitmapimage=params[0]; image.compress(Bitmap.CompressFormat.JPEG,100,outStream); outStream.flush(); outStream.close(); result=mActivity.getResources().getString(R.string.save_picture_success,file.getAbsolutePath()); }catch(Exceptione){ e.printStackTrace(); } returnresult; } @Override protectedvoidonPostExecute(Stringresult){ Toast.makeText(mActivity,result,Toast.LENGTH_SHORT).show(); mImageView.setDrawingCacheEnabled(false); } }
stirng文件下需要的几个toast
保存图片 保存失败 图片成功保存至%s目录
代码中引用
mScanCode.setOnLongClickListener(newView.OnLongClickListener(){ @Override publicbooleanonLongClick(Viewv){ AlertDialog.Builderbuilder=newAlertDialog.Builder(ShareActivity.this); builder.setItems(newString[]{getResources().getString(R.string.save_picture)},newDialogInterface.OnClickListener(){ @Override publicvoidonClick(DialogInterfacedialog,intwhich){ mScanCode.setDrawingCacheEnabled(true); BitmapimageBitmap=mScanCode.getDrawingCache(); if(imageBitmap!=null){ newSaveImageUtils(ShareActivity.this,mScanCode).execute(imageBitmap); } } }); builder.show(); returntrue; } });
总结
以上所述是小编给大家介绍的Android长按imageview把图片保存到本地的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。