全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

android 手机截取长屏实例代码

最近项目遇到一个需求:把当前页面保存到手机相册。想了想 我还不会呢,就百度了下大神的足迹,踏着大神的足迹,一路向前。废话不说,记录下,后期学习。

 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小时内与您取得联系。