最近项目遇到一个需求:把当前页面保存到手机相册。想了想 我还不会呢,就百度了下大神的足迹,踏着大神的足迹,一路向前。废话不说,记录下,后期学习。
public class ScreenUtils {
/**
* 截取scrollview的屏幕
* @param scrollView
* @return
*/
public static Bitmap getBitmapByView(ScrollView scrollView) {
int h = 0;
Bitmap bitmap = null;
// 获取scrollview实际高度
for (int i = 0; i < scrollView.getChildCount(); i++) {
h += scrollView.getChildAt(i).getHeight();
scrollView.getChildAt(i).setBackgroundColor(
Color.parseColor("#ffffff"));
}
// 创建对应大小的bitmap
bitmap = Bitmap.createBitmap(scrollView.getWidth(), h,
Bitmap.Config.RGB_565);
final Canvas canvas = new Canvas(bitmap);
scrollView.draw(canvas);
return bitmap;
}
/**
* 截图listview
* **/
public static Bitmap getListViewBitmap(ListView listView,String picpath) {
int h = 0;
Bitmap bitmap;
// 获取listView实际高度
for (int i = 0; i < listView.getChildCount(); i++) {
h += listView.getChildAt(i).getHeight();
}
// 创建对应大小的bitmap
bitmap = Bitmap.createBitmap(listView.getWidth(), h,
Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(bitmap);
listView.draw(canvas);
return bitmap;
}
/**
* 压缩图片
* @param image
* @return
*/
public static Bitmap compressImage(Bitmap image) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
// 质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中
image.compress(Bitmap.CompressFormat.JPEG, 100, baos);
int options = 100;
// 循环判断如果压缩后图片是否大于250K,大于继续压缩
while (baos.toByteArray().length / 1024 > 1024 && options >10) {
// 重置baos
baos.reset();
// 这里压缩options%,把压缩后的数据存放到baos中
image.compress(Bitmap.CompressFormat.JPEG, options, baos);
// 每次都减少10
options -= 10;
}
// 把压缩后的数据baos存放到ByteArrayInputStream中
ByteArrayInputStream isBm = new ByteArrayInputStream(baos.toByteArray());
// 把ByteArrayInputStream数据生成图片
Bitmap bitmap = BitmapFactory.decodeStream(isBm, null, null);
return bitmap;
}
/**
* 保存到sdcard
* @param b
* @return
*/
public static String savePic(Context context, Bitmap b) {
File outfile = new File("/sdcard/image");
// 如果文件不存在,则创建一个新文件
if (!outfile.isDirectory()) {
try {
outfile.mkdir();
} catch (Exception e) {
e.printStackTrace();
}
}
String fname = outfile + "/" + System.currentTimeMillis() + ".jpg";
FileOutputStream fos = null;
try {
fos = new FileOutputStream(fname);
if (null != fos) {
b.compress(Bitmap.CompressFormat.JPEG, 90, fos);
fos.flush();
fos.close();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// 其次把文件插入到系统图库
try {
MediaStore.Images.Media.insertImage(context.getContentResolver(),
outfile.getAbsolutePath(), fname, null);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 最后通知图库更新
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + fname)));
return fname;
}
}
以上为百度的工具类。
使用方法:
ScreenUtils
.savePic(XXXActivity.this,ScreenUtils.compressImage(ScreenUtils
.getBitmapByView(XXXScrollView)));
好了,截取成功了!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# android
# 手机截取长屏
# 屏幕截取
# 截取手机屏幕
# Android Bitmap的截取及状态栏的隐藏和显示功能
# Android实现bitmap指定区域滑动截取功能
# 解析Android截取手机屏幕两种实现方案
# Android实现拍照截取和相册图片截取
# Android个人中心的头像上传
# 图片编码及截取实例
# Android 仿QQ头像自定义截取功能
# Android开发获取短信的内容并截取短信
# Android中截取当前屏幕图片的实例代码
# Android截取视频帧并转化为Bitmap示例
# Android截取指定View为图片的实现方法
# 大神
# 好了
# 我还
# 不存在
# 想了
# 每次都
# 创建一个
# 大家多多
# 踏着
# 上为
# 后期
# 新文件
# Canvas
# final
相关文章:
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
建站DNS解析失败?如何正确配置域名服务器?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
昆明高端网站制作公司,昆明公租房申请网上登录入口?
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
网站制作企业,网站的banner和导航栏是指什么?
如何构建满足综合性能需求的优质建站方案?
如何在IIS服务器上快速部署高效网站?
宝塔面板创建网站无法访问?如何快速排查修复?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
如何在云主机上快速搭建多站点网站?
建站之星后台密码遗忘?如何快速找回?
如何在服务器上三步完成建站并提升流量?
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
临沂网站制作企业,临沂第三中学官方网站?
实例解析Array和String方法
已有域名和空间,如何快速搭建网站?
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
建站之星如何实现网站加密操作?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
,在苏州找工作,上哪个网站比较好?
如何快速登录WAP自助建站平台?
非常酷的网站设计制作软件,酷培ai教育官方网站?
javascript基本数据类型及类型检测常用方法小结
如何通过商城免费建站系统源码自定义网站主题?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?
如何用低价快速搭建高质量网站?
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
C#怎么使用委托和事件 C# delegate与event编程方法
定制建站方案优化指南:企业官网开发与建站费用解析
C++时间戳转换成日期时间的步骤和示例代码
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
江苏网站制作公司有哪些,江苏书法考级官方网站?
如何在局域网内绑定自建网站域名?
建站上传速度慢?如何优化加速网站加载效率?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
如何配置IIS站点权限与局域网访问?
建站中国官网:模板定制+SEO优化+建站流程一站式指南
如何通过可视化优化提升建站效果?
建站之星后台管理:高效配置与模板优化提升用户体验
历史网站制作软件,华为如何找回被删除的网站?
php json中文编码为null的解决办法
建站之星后台密码遗忘如何找回?
建站之星展会模板:智能建站与自助搭建高效解决方案
Thinkphp 中 distinct 的用法解析
如何安全更换建站之星模板并保留数据?
如何在IIS7上新建站点并设置安全权限?
*请认真填写需求信息,我们会在24小时内与您取得联系。