Android 截屏之项目实战(只截取当前活动页)

本文介绍了如何在Android中实现ScrollView的截图功能。通过获取ScrollView的实际高度,创建对应大小的Bitmap,并进行保存或传递给后台。提供了封装的方法,只需传入ScrollView即可完成截图操作,包括图片的本地存储和数据处理。
摘要由CSDN通过智能技术生成

前言

在做项目的时候,公司有需求会用到截屏,其实这里用起来很简单。
这里简单说一下处理的逻辑,在处理截屏的时候,我这里应用的是ScrollView,截取scrollview的屏幕

  1. 获取scrollview的实际高度
  2. 创建对应大小的bitmap
  3. 处理判断bitmap是否为空,不为空的情况下,去对图片做保存本地处理,或者把图片传递给后台

这里我封装了一个方法,只需要把布局里面的scrollView传进去就可以了(这儿肯定有人想看布局是怎么写的,这里就不把代码沾出来了,这个就根据自己的需求去写了,布局很简单)

   /**
     * 截取scrollview的屏幕
     *
     * @param scrollView
     * @return
     */
    public void getBitmapByView(ScrollView scrollView) {
        int h = 0;

        // 获取scrollview实际高度
        for (int i = 0; i < scrollView.getChildCount(); i++) {
            h += scrollView.getChildAt(i).getHeight();
            scrollView.getChildAt(i).setBackgroundColor(
                    Color.parseColor("#ffffff"));
        }
        // 创建对应大小的bitmap
        Bitmap bitmap = Bitmap.createBitmap(scrollView.getWidth(), h,
                Bitmap.Config.RGB_565);
        final Canvas canvas = new Canvas(bitmap);
        scrollView.draw(canvas);

        if (bitmap != null) {
            try {
                //这里做的就是存储的操作
                String sdCardPath = Environment.getExternalStorageDirectory().getPath();
                String filePath = sdCardPath + File.separator + System.currentTimeMillis() + "screenshot.png";
                File file = new File(filePath);
                FileOutputStream os = new FileOutputStream(file);
                bitmap.compress(Bitmap.CompressFormat.PNG, 100, os);
                os.flush();
                os.close();

                //这个方法,可以处理把数据传递给后台的操作
                doScreen(filePath);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
   /**
     * 图片截图 数据处理
     *
     * @param screenUrl  
     */
    private void doScreen(String screenUrl) {
        //图片处理
        File file = new File(screenUrl);
        String fileName = file.getName();
        MediaType.parse("image/png"), file)
    }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拉莫帅

你的鼓励将是我的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值