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 ANR问题

    解析Android ANR问题

    ANR 的全称是 Application No Responding,即应用程序无响应,具体是一些特定的 Message (Key Dispatch、Broadcast、Service) 在应用的UI线程(主线程)没有在规定的时间内处理完,进而触发 ANR 异常
    2021-01-01
  • Android显示系统SurfaceFlinger分析

    Android显示系统SurfaceFlinger分析

    本文详细讲解了Android显示系统SurfaceFlinger,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • Android实现千变万化的ViewPager切换动画

    Android实现千变万化的ViewPager切换动画

    这篇文章主要为大家详细介绍了Android实现千变万化的ViewPager切换动画,自定义PageTransformer实现个性的切换动画,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • Android实现图片滚动和页签控件功能的实现代码

    Android实现图片滚动和页签控件功能的实现代码

    这篇文章主要介绍了Android实现图片滚动控件含页签功能的实现代码,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧
    2018-05-05
  • 在RecyclerView中实现button的跳转功能

    在RecyclerView中实现button的跳转功能

    本次实验就是在RecyclerView中添加一个button控件并实现监听,使鼠标点击时可以跳转到另外一个设计好的界面,对RecyclerView实现button跳转功能感兴趣的朋友一起看看吧
    2021-10-10
  • AndriodStudio利用ListView和数据库实现简单学生管理

    AndriodStudio利用ListView和数据库实现简单学生管理

    这篇文章主要为大家详细介绍了AndriodStudio利用ListView和数据库实现简单学生管理,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • android编程之多线程编程实例分析

    android编程之多线程编程实例分析

    这篇文章主要介绍了android编程之多线程编程,实例分析了Android多线程程序设计的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • 深入Android Browser配置管理的详解

    深入Android Browser配置管理的详解

    本篇文章是对Android Browser的配置管理进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • Eclipse搭建Android开发环境(安装ADT,Android4.4.2)

    Eclipse搭建Android开发环境(安装ADT,Android4.4.2)

    这篇文章主要介绍了Eclipse搭建Android开发环境(安装ADT,Android4.4.2),有兴趣的可以了解一下。
    2016-11-11
  • android中暂停背景音乐

    android中暂停背景音乐

    本文给大家分享的是在Android中暂停背景音乐的方法的示例,以及度娘上其他网友的实现方法,感觉非常不错,这里全部推荐给大家,有需要的小伙伴可以参考下。
    2015-05-05

最新评论