全网整合营销服务商

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

免费咨询热线: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 


相关文章: 小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  如何快速生成可下载的建站源码工具?  如何快速重置建站主机并恢复默认配置?  如何选择高效响应式自助建站源码系统?  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  如何高效完成自助建站业务培训?  临沂网站制作企业,临沂第三中学官方网站?  实惠建站价格推荐:2025年高性价比自助建站套餐解析  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  C++时间戳转换成日期时间的步骤和示例代码  如何快速搭建二级域名独立网站?  小型网站制作HTML,*游戏网站怎么搭建?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  如何在Golang中使用replace替换模块_指定本地或远程路径  微信推文制作网站有哪些,怎么做微信推文,急?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  如何选择高性价比服务器搭建个人网站?  建站之星安装步骤有哪些常见问题?  如何配置FTP站点权限与安全设置?  网站制作价目表怎么做,珍爱网婚介费用多少?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  广平建站公司哪家专业可靠?如何选择?  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  做企业网站制作流程,企业网站制作基本流程有哪些?  制作旅游网站html,怎样注册旅游网站?  如何在云主机上快速搭建多站点网站?  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  如何在宝塔面板中创建新站点?  大连 网站制作,大连天途有线官网?  家庭建站与云服务器建站,如何选择更优?  如何彻底卸载建站之星软件?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  建站之星免费版是否永久可用?  如何在阿里云服务器自主搭建网站?  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  如何在香港免费服务器上快速搭建网站?  nginx修改上传文件大小限制的方法  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  ,在苏州找工作,上哪个网站比较好?  *服务器网站为何频现安全漏洞?  如何确认建站备案号应放置的具体位置?  阿里云网站制作公司,阿里云快速搭建网站好用吗?  c# 在ASP.NET Core中管理和取消后台任务 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。