工具类
之前用
AsyncTask
现在改用rxJava
public class SaveImageUtils { public static voID imageSave(final ImageVIEw imageVIEw,final int ID) { Observable .create(new Observable.OnSubscribe<ImageVIEw>() { @OverrIDe public voID call(Subscriber<? super ImageVIEw> sub) { sub.onNext(imageVIEw); } } ).subscribeOn(Schedulers.io()) .observeOn(AndroIDSchedulers.mainThread()) .subscribe(new MySubscriber<ImageVIEw>() { @OverrIDe public voID onNext(ImageVIEw imageVIEw) { file imagefile = new file(ActivityUtils.ImagePath(),ID + ".jpg"); fileOutputStream outStream = null; try { outStream = new fileOutputStream(imagefile); Bitmap image = 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 (IOException e) { e.printstacktrace(); onError(e); } } @OverrIDe public voID onError(Throwable e) { Toast.makeText(UIUtils.getContext(),UIUtils.getString(R.string.save_picture_Failed),Toast.LENGTH_LONG).show(); } }); } }
MySubscriber
public class MySubscriber<T> extends Subscriber<T> { @OverrIDe public voID onStart() { super.onStart(); } @OverrIDe public voID onCompleted() { } @OverrIDe public voID onError(Throwable e) { } @OverrIDe public voID onNext(T t) { } } //不建议使用了package com.app.mly.utils; import androID.app.Activity; import androID.graphics.Bitmap; import androID.os.AsyncTask; import androID.os.Environment; import androID.Widget.ImageVIEw; import androID.Widget.Toast; import com.fengche.androID.mly.R; import java.io.file; import java.io.fileOutputStream; /** * Created by y on 2016/1/14. */ public class SaveImageUtils extends AsyncTask<Bitmap,VoID,String> { Activity mActivity; ImageVIEw mImageVIEw; public SaveImageUtils(Activity activity,ImageVIEw imageVIEw) { this.mImageVIEw = imageVIEw; this.mActivity = activity; } @OverrIDe protected String doInBackground(Bitmap... params) { String result = mActivity.getResources().getString(R.string.save_picture_Failed); try { String sdcard = Environment.getExternalStorageDirectory().toString(); file file = new file(sdcard + "/123"); if (!file.exists()) { file.mkdirs(); } file imagefile = new file(file.getabsolutePath(),"命名" + ".jpg"); fileOutputStream outStream = null; outStream = new fileOutputStream(imagefile); Bitmap image = params[0]; image.compress(Bitmap.CompressFormat.JPEG,outStream); outStream.flush(); outStream.close(); result = mActivity.getResources().getString(R.string.save_picture_success,file.getabsolutePath()); } catch (Exception e) { e.printstacktrace(); } return result; } @OverrIDe protected voID onPostExecute(String result) { Toast.makeText(mActivity,result,Toast.LENGTH_SHORT).show(); mImageVIEw.setDrawingCacheEnabled(false); } }
stirng文件下需要的几个toast
<string name="save_picture">保存图片</string> <string name="save_picture_Failed">保存失败</string> <string name="save_picture_success">图片成功保存至%s目录</string>
代码中引用
mScanCode.setonLongClickListener(new VIEw.OnLongClickListener() { @OverrIDe public boolean onLongClick(VIEw v) { AlertDialog.Builder builder = new AlertDialog.Builder(ShareActivity.this); builder.setItems(new String[]{getResources().getString(R.string.save_picture)},new DialogInterface.OnClickListener() { @OverrIDe public voID onClick(DialogInterface dialog,int which) { mScanCode.setDrawingCacheEnabled(true); Bitmap imageBitmap = mScanCode.getDrawingCache(); if (imageBitmap != null) { new SaveImageUtils(ShareActivity.this,mScanCode).execute(imageBitmap); } } }); builder.show(); return true; } });
总结
以上所述是小编给大家介绍的AndroID长按imagevIEw把图片保存到本地的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!
总结以上是内存溢出为你收集整理的Android长按imageview把图片保存到本地的实例代码全部内容,希望文章能够帮你解决Android长按imageview把图片保存到本地的实例代码所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)