Android长按imageview把图片保存到本地

工具类


之前用

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. AsyncTask  

现在改用rxJava

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. public class SaveImageUtils {  
  2.   
  3.   
  4.     public static void imageSave(final ImageView imageView, final int id) {  
  5.   
  6.   
  7.         Observable  
  8.                 .create(new Observable.OnSubscribe<ImageView>() {  
  9.                             @Override  
  10.                             public void call(Subscriber<? super ImageView> sub) {  
  11.                                 sub.onNext(imageView);  
  12.                             }  
  13.   
  14.                         }  
  15.                 ).subscribeOn(Schedulers.io())  
  16.                 .observeOn(AndroidSchedulers.mainThread())  
  17.                 .subscribe(new MySubscriber<ImageView>() {  
  18.                     @Override  
  19.                     public void onNext(ImageView imageView) {  
  20.                         File imageFile = new File(ActivityUtils.ImagePath(), id + ".jpg");  
  21.                         FileOutputStream outStream = null;  
  22.                         try {  
  23.                             outStream = new FileOutputStream(imageFile);  
  24.                             Bitmap image = imageView.getDrawingCache();  
  25.                             image.compress(Bitmap.CompressFormat.JPEG, 100, outStream);  
  26.                             outStream.flush();  
  27.                             outStream.close();  
  28.                             Toast.makeText(UIUtils.getContext(), UIUtils.getString(R.string.save_picture_success), Toast.LENGTH_LONG).show();  
  29.                         } catch (IOException e) {  
  30.                             e.printStackTrace();  
  31.                             onError(e);  
  32.                         }  
  33.                     }  
  34.   
  35.                     @Override  
  36.                     public void onError(Throwable e) {  
  37.                         Toast.makeText(UIUtils.getContext(), UIUtils.getString(R.string.save_picture_failed), Toast.LENGTH_LONG).show();  
  38.                     }  
  39.                 });  
  40.     }  
  41. }  

MySubscriber


[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. public class MySubscriber<T> extends Subscriber<T> {  
  2.   
  3.       
  4.   
  5.     @Override  
  6.     public void onStart() {  
  7.         super.onStart();  
  8.          
  9.     }  
  10.   
  11.     @Override  
  12.     public void onCompleted() {  
  13.          
  14.     }  
  15.   
  16.     @Override  
  17.     public void onError(Throwable e) {  
  18.         
  19.     }  
  20.   
  21.     @Override  
  22.     public void onNext(T t) {  
  23.          
  24.     }  
  25.      
  26.       
  27. }  


//不建议使用了

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.app.mly.utils;  
  2.   
  3. import android.app.Activity;  
  4. import android.graphics.Bitmap;  
  5. import android.os.AsyncTask;  
  6. import android.os.Environment;  
  7. import android.widget.ImageView;  
  8. import android.widget.Toast;  
  9.   
  10. import com.fengche.android.mly.R;  
  11.   
  12. import java.io.File;  
  13. import java.io.FileOutputStream;  
  14.   
  15. /** 
  16.  * Created by y on 2016/1/14. 
  17.  */  
  18. public class SaveImageUtils extends AsyncTask<Bitmap, Void, String> {  
  19.     Activity mActivity;  
  20.     ImageView mImageView;  
  21.   
  22.     public SaveImageUtils(Activity activity, ImageView imageView) {  
  23.         this.mImageView = imageView;  
  24.         this.mActivity = activity;  
  25.     }  
  26.   
  27.     @Override  
  28.     protected String doInBackground(Bitmap... params) {  
  29.         String result = mActivity.getResources().getString(R.string.save_picture_failed);  
  30.         try {  
  31.             String sdcard = Environment.getExternalStorageDirectory().toString();  
  32.             File file = new File(sdcard + "/123");  
  33.             if (!file.exists()) {  
  34.                 file.mkdirs();  
  35.             }  
  36.             File imageFile = new File(file.getAbsolutePath(), "命名" + ".jpg");  
  37.             FileOutputStream outStream = null;  
  38.             outStream = new FileOutputStream(imageFile);  
  39.             Bitmap image = params[0];  
  40.             image.compress(Bitmap.CompressFormat.JPEG, 100, outStream);  
  41.             outStream.flush();  
  42.             outStream.close();  
  43.             result = mActivity.getResources().getString(R.string.save_picture_success, file.getAbsolutePath());  
  44.         } catch (Exception e) {  
  45.             e.printStackTrace();  
  46.         }  
  47.         return result;  
  48.     }  
  49.   
  50.     @Override  
  51.     protected void onPostExecute(String result) {  
  52.         Toast.makeText(mActivity, result, Toast.LENGTH_SHORT).show();  
  53.         mImageView.setDrawingCacheEnabled(false);  
  54.     }  
  55. }  

stirng文件下需要的几个toast

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <string name="save_picture">保存图片</string>  
  2. <string name="save_picture_failed">保存失败</string>  
  3. <string name="save_picture_success">图片成功保存至%s目录</string>  
代码中引用

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. mScanCode.setOnLongClickListener(new View.OnLongClickListener() {  
  2.            @Override  
  3.            public boolean onLongClick(View v) {  
  4.                AlertDialog.Builder builder = new AlertDialog.Builder(ShareActivity.this);  
  5.                builder.setItems(new String[]{getResources().getString(R.string.save_picture)}, new DialogInterface.OnClickListener() {  
  6.                    @Override  
  7.                    public void onClick(DialogInterface dialog, int which) {  
  8.                        mScanCode.setDrawingCacheEnabled(true);  
  9.                        Bitmap imageBitmap = mScanCode.getDrawingCache();  
  10.                        if (imageBitmap != null) {  
  11.                            new SaveImageUtils(ShareActivity.this, mScanCode).execute(imageBitmap);  
  12.                        }  
  13.                    }  
  14.                });  
  15.                builder.show();  
  16.                return true;  
  17.            }  
  18.        });  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值