Android截屏主要应用在分享这个操作,所有的截屏,截取的是视图。接下来给大家分享一下这个功能的干货

温馨提示:我这里分享使用的是极光的Jshare,也可以使用原生分享
这里是JshareSDK接入的链接:链接: https://docs.jiguang.cn/jshare/client/Android/android_sdk

常规需求,我这里的示例是拿弹窗来演示,标题也说了截取的是view,后面会着重讲解
弹窗中有二维码,顺便说下二维码生成
  1. build.gradle (app)中添加zxing依赖:
    //扫描二维码implementation 'com.github.yuzhiqiang1993:zxing:2.2.9'
  1. 生成二维码操作
    //生成二维码Bitmap logo = BitmapFactory.decodeResource(context.getResources(), R.mipmap.ic_launcher);//二维码中心logoBitmap qrCode = CodeCreator.createQRCode(url, 400, 400, logo);ImageView codeImg = view.findViewById(R.id.scan_code);if (qrCode != null) {codeImg.setImageBitmap(qrCode);}

回归正题 截取view
1、获取需要截取的View 这里是弹窗中需要截取的view

/**
*dialog中的view获取和回调
*/LinearLayout screenshotView = view.findViewById(R.id.screenshot_view);//截取的视图//弹窗按钮点击截取 回传view button.setOnClickListener(new View.OnClickListener() {@SingleClick@Overridepublic void onClick(View v) {mListener.onSaveAndShare(screenshotView);//需要回传的view}});/**
*页面中的dialog回调
*/private View screenshotView;scanningDialog.setOnShareListener(new ScanningDialog.OnShareListener() {@Overridepublic void oncLoseDialog() {scanningDialog.dismiss();}@Overridepublic void onSaveAndShare(View view) {//保存图片并分享screenshotView = view;screenShotView();}});

2、dialog弹窗截屏

  private final int REQUEST_STORAGE = 10223;//存储权限/*** dialog弹窗截屏* 最终调用方法*/public void screenShotView() {//动态获取权限if (checkPermission()) {saveShotView();//截取图片} else {requestPermission();//权限请求}}@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {if (requestCode == REQUEST_STORAGE) {if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {saveShotView();//截取图片} else {requestPermission();//权限请求}}}

3、获取权限 checkPermission() requestPermission()

/*** check权限* request权限*/private boolean checkPermission() {int selfPermission = ContextCompat.checkSelfPermission(requireContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE);return selfPermission == PackageManager.PERMISSION_GRANTED;}
private void requestPermission() {requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_STORAGE);}

4、截取并分享 saveShotView()

/**
* 截取图片并保存 可截取任意视图
* screenshotView需要截取的view 第一步中的视图对象
*/private void saveShotView() {String CAMERA_DIR = Environment.getExternalStorageDirectory().getAbsolutePath() + "/DCIM/Camera";Bitmap tempBitmap = Bitmap.createBitmap(screenshotView.getWidth(), screenshotView.getHeight(), Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas(tempBitmap);screenshotView.draw(canvas);File fileDir = new File(CAMERA_DIR);if (!fileDir.exists()) {boolean mkdirs = fileDir.mkdirs();}String path = CAMERA_DIR + "/share_screen.png";try {FileOutputStream foStream = new FileOutputStream(path);tempBitmap.compress(Bitmap.CompressFormat.PNG, 100, foStream);foStream.flush();foStream.close();if (scanningDialog != null) {scanningDialog.dismiss();}ToastUtils.toast("保存成功,请在相册中查看");shareNowImage(path);//todo调用分享} catch (Exception e) {Log.e("保存图片出错", e.toString());}}

5、极光分享 shareNowImage(String path)

 /*** path  本地图片路径* shareListener分享回调*/private void shareNowImage(String path) {List<String> platforms = JShareInterface.getPlatformList();PageEventUtils.inFriendsNow(requireContext());ShareParams shareParams = new ShareParams();shareParams.setShareType(Platform.SHARE_IMAGE);shareParams.setImagePath(path);JShareInterface.share(platforms.get(0), shareParams, shareListener);}//分享回调private final PlatActionListener shareListener = new PlatActionListener() {@Overridepublic void onComplete(Platform platform, int action, HashMap<String, Object> data) {ToastUtils.toast("分享成功");}@Overridepublic void onError(Platform platform, int action, int errorCode, Throwable error) {Log.e("分享失败", "error:" + errorCode + ",msg:" + error);}@Overridepublic void onCancel(Platform platform, int action) {ToastUtils.toast("取消分享");}};

推荐链接: 自定义完整二维码分享Dialog代码分享

Android截屏分享之View生成图片进行保存分享、全屏,半屏、指定VIew、弹窗.......相关推荐

  1. Android截屏与WebView长图分享经验总结【转】

    原文:https://youzanmobile.github.io/2017/05/19/android-screenshot-and-webview/ 最近在做新业务需求的同时,我们在 Androi ...

  2. Android 截屏与 WebView 长图分享经验总结

    最近在做新业务需求的同时,我们在 Android 上遇到了一些之前没有碰到过的问题,截屏分享. WebView 生成长图以及长图在各个分享渠道分享时图片模糊甚至分享失败等问题,在这过程中踩了很多坑,到 ...

  3. Android截屏一键分享开发与实现方式的反思和总结

    本文主要记录android系统截屏一键分享开发,后续优化. 近期接到新需求,需要做截屏,然后弹出小窗口,显示一键分享与截屏小图预览.类似于同花顺app截图弹出框,点击后出现分享界面. 效果图如下:   ...

  4. Android截屏分享

    最近项目需要实现Android截屏分享功能,包括Android截屏获取图片.将图片保存到本地.通知系统相册更新.通过微信.QQ.微博分享截屏图片,本篇博客作为总结回顾. 一.Android截屏获取图片 ...

  5. Android截屏截图方法汇总(Activity、View、ScrollView、ListView、RecycleView、WebView截屏截图)

    Android截屏 Android截屏的原理:获取具体需要截屏的区域的Bitmap,然后绘制在画布上,保存为图片后进行分享或者其它用途 一.Activity截屏 1.截Activity界面(包含空白的 ...

  6. Android 截屏监听(截图分享功能实现)

    具体来说就是,检测到了用户在应用内有截图,弹出一个分享界面, 在截图下方添加一个二维码,进行分享. ●●●  前言 Android系统没有直接对截屏事件监听的接口,也没有广播,只能自己动手来丰衣足食, ...

  7. android cocos 截屏,Cocos Creator(2.x版本)屏幕截图保存分享)

    cocos creator (2.x版本)屏幕截图保存分享 cocos creator 屏幕截图 我用的是cocoscreator2.1.1版本 cocos creator 屏幕截图 我用的是coco ...

  8. android华为虚拟截屏黑屏,Android截屏表面视图显示黑屏

    Android截屏表面视图显示黑屏 我试图通过代码拍摄我的游戏的截图,并通过一个意图来分享它.我能做这些事情,但是截图总是看起来是黑色的.下面是与分享截图相关的代码:View view = MainA ...

  9. Android截屏截图的几种方法总结

    Android截屏 Android截屏的原理:获取具体需要截屏的区域的Bitmap,然后绘制在画布上,保存为图片后进行分享或者其它用途 一.Activity截屏 1.截Activity界面(包含空白的 ...

最新文章

  1. python如何导入txt文件-python如何导入txt数据库?
  2. proxool连接池空闲连接中断问题解决
  3. Microsoft Build 2016 Day 1 记录
  4. 【线程呓语】与线程相关的一些概念
  5. SAP 电商云 Spartacus UI 的 feature module 设计原理
  6. word总页数不包含封面_6个实用的word模板,让你快速制作表格和目录
  7. 海升集团数据上云 走出智能农业的新路子
  8. linux下进程监听端口,linux下查看监听端口对应的进程
  9. Python框架篇之Django(Models的多表操作)
  10. Windows 有哪些值得推荐的必装软件?
  11. 一个普通java程序员的10年...泪奔 o(╥﹏╥)o o(╥﹏╥)o
  12. 家里的钱都花哪儿了?做份支出记账表看看
  13. Implement AWS SQS and Lambda to decouple process flow
  14. 关于CREO图纸导出到CAD后尺寸不对的问题
  15. java+uiautomator 打包运行
  16. java自定义数组_Java自定义数组
  17. 【校招VIP】前端校招考点之页面转换算法
  18. 需求分析挑战之旅(疯狂的订餐系统)(7)——变被动为主动
  19. 【解题报告】2015ACM/ICPC亚洲区上海站
  20. 防止tweak依附,App有高招;破解App保护,tweak留一手

热门文章

  1. Centos7 文件查找配置项(FZF命令)
  2. 毕设-基于SSM物业管理系统
  3. Python常用插件类举,lxml+Xpath实现爬虫,使用Xpath爬取链家二手房源信息
  4. podnode选择部署策略: nodeSelector和nodeAffinity
  5. 上,明天上班了???
  6. JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算...
  7. 如何通过组策略配置proxy.pac
  8. 流媒体之从零实现搭建简单流媒体服务器,推流,拉流播放全景视频
  9. 如何看待好多人盼着锤子科技倒闭?
  10. Task1.1 模型的构建之金融贷款的逾期模型