Android屏幕及view的截图实例详解

屏幕可见区域的截图

整个屏幕截图的话可以用View view = getWindow().getDecorView();

public static Bitmap getNormalViewScreenshot(View view) {

view.setDrawingCacheEnabled(true);

view.buildDrawingCache();

return view.getDrawingCache();

}

scrollview的整体截屏

public static Bitmap getWholeScrollViewToBitmap(View view) {

view.measure(MeasureSpec.makeMeasureSpec(0,MeasureSpec.UNSPECIFIED),MeasureSpec.makeMeasureSpec(0,MeasureSpec.UNSPECIFIED));

view.layout(0,view.getMeasuredWidth(),view.getMeasuredHeight());

view.buildDrawingCache();

Bitmap bitmap = view.getDrawingCache();

return bitmap;

}

webview的整体截图

public static Bitmap getWholeWebViewToBitmap(WebView webView) {

Picture snapShot = webView.capturePicture();

Bitmap bmp = Bitmap.createBitmap(snapShot.getWidth(),snapShot.getHeight(),Bitmap.Config.ARGB_8888);

Canvas canvas = new Canvas(bmp);

snapShot.draw(canvas);

return bmp;

}

listview的整体截图

public static Bitmap getWholeListViewItemsToBitmap(ListView listview) {

ListAdapter adapter = listview.getAdapter();

int itemscount = adapter.getCount();

int allitemsheight = 0;

List bmps = new ArrayList();

for (int i = 0; i < itemscount; i++) {

View childView = adapter.getView(i,null,listview);

childView.measure(MeasureSpec.makeMeasureSpec(listview.getWidth(),MeasureSpec.EXACTLY),MeasureSpec.UNSPECIFIED));

childView.layout(0,childView.getMeasuredWidth(),childView.getMeasuredHeight());

childView.setDrawingCacheEnabled(true);

childView.buildDrawingCache();

bmps.add(childView.getDrawingCache());

allitemsheight += childView.getMeasuredHeight();

}

Bitmap bigbitmap = Bitmap.createBitmap(listview.getMeasuredWidth(),allitemsheight,Bitmap.Config.ARGB_8888);

Canvas bigcanvas = new Canvas(bigbitmap);

Paint paint = new Paint();

int iHeight = 0;

for (int i = 0; i < bmps.size(); i++) {

Bitmap bmp = bmps.get(i);

bigcanvas.drawBitmap(bmp,iHeight,paint);

iHeight += bmp.getHeight();

bmp.recycle();

bmp = null;

}

return bigbitmap;

}

需要多次截图的话,需要用到 view.destroyDrawingCache();

Bitmap normalViewScreenshot = ScreenShotUtils.getNormalViewScreenshot(mFrameContent);

if (normalViewScreenshot != null) {

Bitmap b = Bitmap.createBitmap(normalViewScreenshot);

mImageResult.setImageBitmap(b);

mFrameContent.destroyDrawingCache();

}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

android 截图 listview,Android屏幕及view的截图实例详解相关推荐

  1. android怎么把动图变成视频格式,Android 录制手机屏幕视频生成GIF图片实例详解

    Android 录制手机屏幕视频生成GIF图片实例详解 无图无真相,在我们日常的网络交流中往往需要给交流对象提供直观的显示,而视频是一个很好的方式,但是视频需要播放器,还需要当做文件进行对点传输,并不 ...

  2. android自定义圆角进度条,Android自定义进度条的圆角横向进度条实例详解

    1.本文将向你介绍自定义进度条的写法,比较简单,但还是有些知识点是需要注意的: invalidate()方法 RectF方法的应用 onMeasure方法的应用 2.原理 画3层圆角矩形,底层为黑色, ...

  3. android相册和拍照并裁剪图片大小,Android 拍照并对照片进行裁剪和压缩实例详解...

    Android 拍照并对照片进行裁剪和压缩实例详解 本文主要介绍 Android 调用摄像头拍照并对照片进行裁剪和压缩,文中给出了主要步骤和关键代码. 调用摄像头拍照,对拍摄照片进行裁剪,代码如下. ...

  4. android 清理缓存动画,Android仿微信清理内存图表动画(解决surfaceView屏幕闪烁问题)demo实例详解...

    最近接了一个项目其中有功能要实现一个清理内存,要求和微信的效果一样.于是想到用surfaceView而不是继承view.下面小编给大家解析下实现思路. surfaceView是为了解决频繁绘制动画产生 ...

  5. android mvp模式例子_Android中mvp模式使用实例详解

    MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负 责显示.作为一种新的模式,MVP与MVC有着一 ...

  6. android自定义view案例,Android自定义View的实现方法实例详解

    一.自绘控件 下面我们准备来自定义一个计数器View,这个View可以响应用户的点击事件,并自动记录一共点击了多少次.新建一个CounterView继承自View,代码如下所示: 可以看到,首先我们在 ...

  7. 【5年Android从零复盘系列之二十】Android自定义View(15):Matrix详解(图文)【转载】

    [转载]本文转载自麻花儿wt 的文章<android matrix 最全方法详解与进阶(完整篇)> [5年Android从零复盘系列之二十]Android自定义View(15):Matri ...

  8. Android四大组件之——Activity的生命周期(图文详解)

        转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai       联系方式:JohnTsai.Work@gmail.com       [Andro ...

  9. Android Studio CPU profiler性能分析工具介绍和使用详解

    Android Studio CPU profiler性能分析工具介绍和使用详解 CPU profiler介绍 Android Studio CPU 性能剖析器可实时检查应用的 CPU 使用率和线程活 ...

最新文章

  1. 全球智能制造发展现状及前景预测 工业机器人引领行业发展
  2. 利用pre-compiled headers技术以加速编译速度(一)
  3. oracle的索引使用方法,在OracleE数据库的字段上建立索引的方法
  4. RecyclerView实现滑动删除和拖拽功能
  5. C++ 复杂、内存漏洞,2019 年的软件开发并不安全!
  6. 5.2 2.5-Dimensional Impostors for realistic trees and forests笔记
  7. jpg灰度化 python_python开发之HighGUI上位机开发(一)
  8. 设计模式的原则和分类 思想模型
  9. 智能系统的信息处理原理
  10. 应用市场无法连接服务器怎么办,无法连接到app store是什么原因?苹果应用商店打不开的解决方法...
  11. RTKLIB单点定位处理流程之一(postpos/后处理)
  12. nodejs微信公众号开发第一步(接入指南)--wechat模块
  13. 在mac上用文本编辑器写python_Mac电脑上实用的文本编辑器BBEdit
  14. Halcon 3D moments_object_model_3d简介
  15. 软考系统集成项目管理工程师模拟题(含答案、解析)
  16. 2023年第一砖——IT市场的变和不变
  17. 休学证明格式【休学申请书标准通用】
  18. UI设计师工作流程详解,让你充分了解UI设计师
  19. angular知识系列:使用tinymce提示This domain is not registered with Tiny Cloud
  20. Bloxorz I [POJ3322]

热门文章

  1. python怎么发图文_用Python发一封图文并茂的邮件
  2. ios笔试题算法_微软笔试题-Dijkstra算法
  3. math python 向上取整_Python成为专业人士笔记-各数学运算操作深度剖析
  4. 如何用python画转盘_如何用ppt做一个抽奖转盘 看完你学会了么
  5. 开启httponly之后登陆失败_二次元约会模拟《少女都市》正式版登陆Steam 橘势大好...
  6. c++ opencv 通过网络连接工业相机_摄像头和机器人视觉开发中的「相机标定」,你了解多少?...
  7. SpringBoot 自带工具类~AopUtils
  8. Java并发编程实战~Balking模式
  9. 管道( Pipeline )模型--示例
  10. HTML在前端开发中起到的作用,什么是字符串,web前端开发里起到什么作用