原理:将截取到的Bitmap赋给Dialog上的ImageView,并对Dialog加了弹出和收起的动画,实现截屏效果。

首先创建一个layout名为show_cut_screen_layout用于弹出截图对话框,上面是一个image,下面是横向线性布局的两个button。

然后设置对话框弹出的style:

进入values——style.xml里面添加如下代码:

接下来在res文件夹下新建一个anim文件夹用于保存对话框弹出和收起动画:

在里面新建popview_in_amin.xml   :

和popview_out_amin.xml   :

接下来是java代码:

//截屏功能

private void popShotSrceenDialog(){

final AlertDialog cutDialog = new AlertDialog.Builder(this).create();

View dialogView = View.inflate(this, R.layout.show_cut_screen_layout, null);

ImageView showImg = (ImageView) dialogView.findViewById(R.id.show_cut_screen_img);

dialogView.findViewById(R.id.share_cancel).setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

cutDialog.dismiss();

}

});

dialogView.findViewById(R.id.share_img).setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

//分享

Uri pa=Uri.fromFile(new File(filePath));//根据路径转化为uri

Intent imageIntent = new Intent(Intent.ACTION_SEND);//调用系统的ACTION_SEND

imageIntent.setType("image/png");

imageIntent.putExtra(Intent.EXTRA_STREAM, pa);//EXTRA_STREAM对应转化为uri的path

startActivity(Intent.createChooser(imageIntent, "分享"));

}

});

//获取当前屏幕的大小

int width = getWindow().getDecorView().getRootView().getWidth();

int height = getWindow().getDecorView().getRootView().getHeight();

//生成相同大小的图片

Bitmap temBitmap = Bitmap.createBitmap( width, height, Bitmap.Config.ARGB_8888 );

//找到当前页面的跟布局

View view = getWindow().getDecorView().getRootView();

//设置缓存

view.setDrawingCacheEnabled(true);

view.buildDrawingCache();

//从缓存中获取当前屏幕的图片

temBitmap = view.getDrawingCache();

//保存图片

if (temBitmap != null)

{

try {

// 获取内置SD卡路径

String sdCardPath = Environment.getExternalStorageDirectory().getPath();

// 图片文件路径,获取系统时间

long time=System.currentTimeMillis();

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss ");

java.util.Date date=new java.util.Date(time);

String str=sdf.format(date);

filePath = sdCardPath + File.separator +str+"screenshot.png";

File file = new File(filePath);

FileOutputStream os = new FileOutputStream(file);

temBitmap.compress(Bitmap.CompressFormat.PNG, 100, os);

os.flush();

os.close();

} catch (Exception e) {

Toast.makeText(be_qrcode.this,"保存失败,请检查权限或清理内存",Toast.LENGTH_SHORT).show();

}

}

showImg.setImageBitmap(temBitmap);

cutDialog.setView(dialogView);

Window window = cutDialog.getWindow();

window.setBackgroundDrawableResource(android.R.color.transparent);

WindowManager m = window.getWindowManager();

Display d = m.getDefaultDisplay(); // 获取屏幕宽、高用

WindowManager.LayoutParams p = window.getAttributes(); // 获取对话框当前的参数值

p.height = (int) (d.getHeight() * 0.8); // 高度设置为屏幕的0.6

p.gravity = Gravity.CENTER;//设置弹出框位置

window.setAttributes(p);

window.setWindowAnimations(R.style.dialogWindowAnim);

cutDialog.show();

}

android实现截屏分享,Android截屏、保存、分享相关推荐

  1. android 后台截屏代码,Android实现截图和分享功能的代码

    先给大家展示下效果图吧 直接上代码: xml的布局: android:id="@+id/btn_jp" android:layout_marginTop="10dip&q ...

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

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

  3. Android滚动截屏,ScrollView截屏,Listview截屏,Recyclerview截屏, 截长图

    最近在做一个关于截频的功能, 恰逢鸿洋大神分享了一篇相关的博客, 我使用之后觉得甚是好用, 所以也整理了一下,以供学习. 在做分享功能的时候,需要截取全屏内容还有截长图,一屏展示不完的内容,一般我们会 ...

  4. android录屏弹窗,android视频截屏手机录屏实现代码

    本文介绍了android视频截屏&手机录屏实现代码,分享给大家,希望对大家有帮助 问题 在android中有时候我们需要对屏幕进行截屏操作,单一的截屏操作好解决可以通过activity的顶层v ...

  5. android写代码截屏微信,android 模仿微信头像裁剪

    android 在android开发中经常会碰到修改头像的功能需求, 而在修改头像>中最难的部分就是在头像的裁剪功能.虽说网上一大堆裁剪的例子,但最重要的是要理解里面的实现原理,这样以后自己改起 ...

  6. android利用反射调用截屏api,Android利用反射机制调用截屏方法和获取屏幕宽高的方法...

    想要在应用中进行截屏,可以直接调用 View 的 getDrawingCache 方法,但是这个方法截图的话是没有状态栏的,想要整屏截图就要自己来实现了. 还有一个方法可以调用系统隐藏的 screen ...

  7. android webview 截图,Android获取webView快照与屏幕截屏的方法 -电脑资料

    前段时间做的一个书店项目其阅读模块中用到了WebView + js,今天把WebView这块用到的几个特性记录下, 其主要用到了webView的快照与屏幕的截屏.部分代码如下: [html] /** ...

  8. android长截屏代码,android长截屏原理及实现代码

    android长截屏原理及实现代码 发布时间:2020-08-31 06:55:16 来源:脚本之家 阅读:158 作者:Android笔记 小米系统自带的长截屏应该很多人都用过,效果不错.当长截屏时 ...

  9. android关于截屏,关于android截屏知识的学习

    最近要做手机截取当前屏幕的开发,发了大半天时间在网上找了很多资料,终于有了一个大概的头绪和思路,若有问题望指点,谢谢! 目前而言个人了解android有三种截屏方法: 1.android SDK提供的 ...

  10. android 系统截屏原理,Android 系统副屏截屏功能

    收到一个客户需求,要求对双屏设备的副屏进行截图.查询资料后发现,系统截图有两种方法,一种是通过SurfaceControl.screenshot提供的接口调用,还有一种是通过screencap 命令获 ...

最新文章

  1. 北大智能学院成立!AI视觉泰斗朱松纯教授任院长
  2. matlab 已知函数值纵坐标值(Y值)获得对应的横坐标
  3. java定义静态set集合_java集合之set
  4. php循环建立新的文件根据文件名移动文件到指定文件夹修改文件名称
  5. 【ES】CURL 操作 ES命令集合
  6. ubuntu16.04 虚拟机装机后常用操作
  7. 主机硬件系统主板状态 vmware_电脑主机启动不了怎么办?
  8. python做3d相册_简单3D翻页相册制作教程(示例代码)
  9. kernel打印模块驱动加载时间
  10. 部署3PAR VSP5.0.9.2监控3PAR实时邮件告警状态
  11. 计算机科学箴言集 -- 编程珠玑续
  12. 朋友圈发图多大不会被压缩_微信:朋友圈照片自动压缩 不暴露位置信息
  13. Zookeeper客户端Curator详解
  14. clickhouse源码:函数分析和自定义函数UDF
  15. 如何做抖音自媒体?这些小技巧一定要掌握
  16. 局域网内QQ代理设置
  17. MapReduce初体验——统计指定文本文件中每一个单词出现的总次数
  18. pyqt任务栏图标问题
  19. 计算机登录忘记密码怎么办,电脑登录密码忘记了怎么办
  20. 【图说】当数据趴遇到感恩节

热门文章

  1. 电工学习通:电路图符号知识大全
  2. 计算机三级网络技术上机,计算机三级网络技术上机部分(南开100题题库)
  3. Unity Gameplay工具集(Unity Gameplay Tool Set)
  4. caxa图文档管理软件服务器,CAXA协同管理2018
  5. Windows把内存设置为0无法开机怎么办
  6. 摆球控制程序PID算法
  7. MATLAB绘图—三维曲线绘图-(plot3)
  8. netbean使用有感
  9. Ribbon界面开发:如何创建Ribbon样式的应用程序框架
  10. C语言实现电脑关机程序