android view存储为jpg,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 super ImageView> 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;
/**
* Created by y on 2016/1/14.
*/
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把图片保存到本地的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
android view存储为jpg,Android长按imageview把图片保存到本地的实例代码相关推荐
- Android文件存储编程实验,Android编程中File文件常见存储与读取操作demo示例
本文实例讲述了Android编程中File文件常见存储与读取操作.分享给大家供大家参考,具体如下: MainActivity文件代码如下: package example.com.myapplicat ...
- android+证书存储,Firefox for Android是否使用设备证书存储?
我发现的唯一证据是: – 在这个网站上http://www.jethrocarr.com/2012/01/04/custom-ca-certificates-and-android/ Jethro c ...
- android view 存值,在android studio中保存textview和复选框的值
问:如何在android studio中保存文本视图和复选框的值,以便稍后我进入该活动时以及在设置新值然后保持新值时可见设置的数据. 答:SharedPreferences用于在Android中存储原 ...
- 九宫格拼图android代码,Android 多图上传后将图片进行九宫格展示的实例代码
不多说上代码 public abstract class NineGridAdapter { protected Context context; protected List list; publi ...
- Android人脸识别Demo竖屏YUV方向调整和图片保存
2019独角兽企业重金招聘Python工程师标准>>> 本博客包含三个常用方法,用于盛开Android版人脸识别Demo中竖屏使用时送入yuv数据,但一直无法识别的情况. 1.首先可 ...
- android view 源码分析,Android ViewPager源码详细分析
1.问题 由于Android Framework源码很庞大,所以读源码必须带着问题来读!没有问题,创造问题再来读!否则很容易迷失在无数的方法与属性之中,最后无功而返. 那么,关于ViewPager有什 ...
- android view gesturedetector,如何在Android中利用 GestureDetector进行手势检测
如何在Android中利用 GestureDetector进行手势检测 发布时间:2020-11-26 16:15:21 来源:亿速云 阅读:92 作者:Leah 今天就跟大家聊聊有关如何在Andro ...
- android 对象存储sd卡,Android网络与数据存储——File存储(实现SD卡文件浏览器)...
Java提供了一套完整的IO流体系,包括FileInputStream.FileOutPutStream等,通过这些IO流可以非常方便的访问磁盘上的文件内容.Android同样支持以这种方式来访问手机 ...
- android view取坐标点,Android 获取子 View 的位置及坐标的方式
一.View 1.1.View 概述 视图 (View) 是一个容器,专门负责布局.表现为显示在屏幕上的各种视图,如 TextView.LinearLayout 等. 1.2.View 分类 View ...
最新文章
- Flutter中通过循环渲染组件
- 人一生要解决的50个关键问题
- 2021-10-20开发计量系统遇到的问题之--1启动mysql--2mybatis谨慎注释--3mybatis返回多表查询结果
- HDU4809 Wow! Such City! Dijkstra算法
- ITK:计算矢量图像中每个像素的大小以生成大小图像
- SMSSMS垃圾邮件检测器的专业攻击
- c mysql 工具类_Jave工具——servlet+jsp编程中mysql数据库连接及操作通用工具类
- Work Queues(点对多)
- python字典实现好友管理系统简易版
- 3dmax:3dmax三维VR渲染设置之摄像机设置(修改摄像机、创建摄像机及其基本参数{视野、正交投影、镜头、环境范围、剪切平面、多过程效果、运动模糊、景深参数、运动模糊参}解释等)图文教程之详细攻略
- 我是一名自由职业白帽黑客
- OSG 场景图(Scene Graph) 类图
- sklearn.neighbors常用API介绍
- 【Java开发 | 工具使用】JAVA使用exe4j打包项目为exe文件
- DC-DC 电源芯片的基本原理和组成
- 道家·老子的算法思想分析
- 如何在FPS游戏中快速实现简单的人体定位算法
- 工业互联网+5G 发展策略研究
- CSS3垂直水平的居中的几种方法
- 单向链表与双向链表的区别
热门文章
- ASP.NET Core应用程序的参数配置及使用
- 【上海】关于云计算,你想学习哪些知识,快让我来满足你
- 基于.net的微服务架构下的开发测试环境运维实践
- Entity Framework Core 命名约定
- [转]解决Android studio升级到3.5的一些问题
- 地理素养的核心构成和主要特点
- C和指针之函数递归实现把amount表示的值转换为单词形式written_amount(unsigned int amount,char *buffer)
- LeetCode之Merge Sorted Array
- vue data数据修改_Vue 超清晰思维导图(7张),详细知识点梳理!
- filegetcontents php 返回值,php – file_get_contents没有返回任何数据