Android获取当前布局视图的截屏

目前在做项目截屏采用的是取View的cacheDrawable 来实现截屏,能得到bitmap然后通过将bitmap转换成file进行保存.比如我一个RelativeLayout布局,我要获取这布局所有的字view然后截屏,可以这样写:

        contentLayout.setDrawingCacheEnabled(true);
        contentLayout.buildDrawingCache();
        Bitmap bitmap = Bitmap.createBitmap(contentLayout.getDrawingCache());
        if (bitmap != null) {
            saveImageToGallery(bitmap);
        }

当然先获取权限,在进行文件流的读写:

    public boolean saveImageToGallery(Bitmap bmp) {
        // 首先保存图片
        String path = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "screenshot";
        File appDir = new File(path);
        if (!appDir.exists()) {
            appDir.mkdir();
        }
        String fileName = System.currentTimeMillis() + ".jpg";
        File file = new File(appDir, fileName);
        try {
            FileOutputStream fos = new FileOutputStream(file);
            //通过io流的方式来压缩保存图片
            boolean isSuccess = bmp.compress(Bitmap.CompressFormat.JPEG, 60, fos);
            fos.flush();
            fos.close();
            //保存图片后发送广播通知更新数据库
            storePath = file.getAbsolutePath();
            Uri uri = Uri.fromFile(file);
            sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri));
            if (isSuccess) {
                return true;
            } else {
                return false;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return false;
    }

这个方式的问题就是不能截取到状态栏整个屏幕,后面我看github也有其他的库可以截取到整个屏幕通过一个service
:

https://github.com/BruceWind/AndroidScreenShot_SysApi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值