软件编程
位置:首页>> 软件编程>> Android编程>> Android长按imageview把图片保存到本地的实例代码

Android长按imageview把图片保存到本地的实例代码

作者:NotesChapter  发布时间:2021-07-23 14:20:38 

标签:android,imageview,长按,保存

工具类

之前用

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, 100, 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把图片保存到本地的实例代码网站的支持!

来源:http://blog.csdn.net/NotesChapter/article/details/53188366

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com