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

 更新时间:2017年12月15日 16:26:22   作者:NotesChapter  
本文通过代码给大家介绍了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把图片保存到本地的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Android仿直播类app赠送礼物功能

    Android仿直播类app赠送礼物功能

    这篇文章主要介绍了Android仿直播类app赠送礼物功能,本文通过实例代码效果图展示的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • Android 中 退出多个activity的经典方法

    Android 中 退出多个activity的经典方法

    这篇文章主要介绍了Android 中 退出多个activity的经典方法 的相关资料,本文给大家分享两种方法,在这小编给大家推荐使用第一种方法,对此文感兴趣的朋友可以参考下
    2016-09-09
  • Mac下完全卸载干净Android Studio的方法

    Mac下完全卸载干净Android Studio的方法

    这篇文章主要介绍了Mac下完全卸载干净Android Studio的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Android组件TabHost实现页面中多个选项卡切换效果

    Android组件TabHost实现页面中多个选项卡切换效果

    这篇文章主要为大家详细介绍了Android组件TabHost实现页面中多个选项卡切换效果的相关资料,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • 详解Android更改APP语言模式的实现过程

    详解Android更改APP语言模式的实现过程

    本文详细介绍如何更改Android中APP的语言模式,这个功能对于大家开发Android APP很有帮助,本文运用文字介绍和代码示例把过程写的很详细,有需要的可以参考借鉴。
    2016-08-08
  • Android10 客户端事务管理ClientLifecycleManager源码解析

    Android10 客户端事务管理ClientLifecycleManager源码解析

    这篇文章主要介绍了Android10 客户端事务管理ClientLifecycleManager源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • Android 实现右滑返回功能

    Android 实现右滑返回功能

    右滑返回功能在ios上非常实用,因为它的返回键在左上角,下面脚本之家小编给大家带来了Android 实现右滑返回功能,感兴趣的朋友一起看看吧
    2018-04-04
  • Android WebView那些坑之上传文件示例

    Android WebView那些坑之上传文件示例

    本篇文章主要介绍了Android WebView那些坑之上传文件示例,具有一定的参考价值,有兴趣的可以了解一下。
    2017-01-01
  • Kotlin WorkManager使用方法详解

    Kotlin WorkManager使用方法详解

    这篇文章主要介绍了Kotlin WorkManager使用方法,WorkManager是 安卓体系结构之一,也是Android JetPack的一部分。WorkManager用于可延期并需要保证执行的后台工作
    2023-01-01
  • Android自定义View实现打字机效果

    Android自定义View实现打字机效果

    最近在做Android开发的时候,需要做类似于打字机打字的效果,字一个一个地蹦出来,显示每一个字都带有打字的声音。现在分享给大家,有需要的可以参考借鉴。
    2016-08-08

最新评论