栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

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

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

工具类

之前用

AsyncTask 

现在改用rxJava

public class SaveImageUtils { 
  public static void imageSave(final ImageView imageView, final int id) { 
    Observable 
 .create(new Observable.OnSubscribe() { 
@Override 
public void call(Subscriber sub) { 
  sub.onNext(imageView); 
} 
     } 
 ).subscribeOn(Schedulers.io()) 
 .observeOn(AndroidSchedulers.mainThread()) 
 .subscribe(new MySubscriber() { 
   @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 extends Subscriber { 
  @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; 
 
public class SaveImageUtils extends AsyncTask { 
  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

保存图片 
保存失败 
图片成功保存至%s目录 

代码中引用

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把图片保存到本地的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对考高分网网站的支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/156946.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号