使用以下代码:Bitmap bitmap;View v1 = MyView.getRootView();v1.setDrawingCacheEnabled(true);bitmap = Bitmap.createBitmap(v1.getDrawingCache());v1.setDrawingCacheEnabled(false);

这MyView是View我们需要在屏幕中包含的内容。你也可以DrawingCache通过View这种方式获得(没有getRootView())。

还有另一种方式..

如果我们ScrollView以root身份查看,那么最好使用以下代码,LayoutInflater inflater = (LayoutInflater) this.getSystemService(LAYOUT_INFLATER_SERVICE);FrameLayout root = (FrameLayout) inflater.inflate(R.layout.activity_main, null); // activity_main is UI(xml) file we used in our Activity class. FrameLayout is root view of my UI(xml) file.root.setDrawingCacheEnabled(true);Bitmap bitmap = getBitmapFromView(this.getWindow().findViewById(R.id.frameLayout)); // here give id of our root layout (here its my FrameLayout's id)root.setDrawingCacheEnabled(false);

这是getBitmapFromView()方法public static Bitmap getBitmapFromView(View view) {

//Define a bitmap with the same size as the view

Bitmap returnedBitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(),Bitmap.Config.ARGB_8888);

//Bind a canvas to it

Canvas canvas = new Canvas(returnedBitmap);

//Get the view's background

Drawable bgDrawable =view.getBackground();

if (bgDrawable!=null)

//has background drawable, then draw it on the canvas

bgDrawable.draw(canvas);

else

//does not have background drawable, then draw white background on the canvas

canvas.drawColor(Color.WHITE);

// draw the view on the canvas

view.draw(canvas);

//return the bitmap

return returnedBitmap;

}

它将显示整个屏幕,包括隐藏在ScrollView

还有另一种更好的截屏方式。

我在这里截了屏幕截图WebView。WebView w = new WebView(this);

w.setWebViewClient(new WebViewClient()

{

public void onPageFinished(final WebView webView, String url) {

new Handler().postDelayed(new Runnable(){

@Override

public void run() {

webView.measure(View.MeasureSpec.makeMeasureSpec(

View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED),

View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));

webView.layout(0, 0, webView.getMeasuredWidth(),

webView.getMeasuredHeight());

webView.setDrawingCacheEnabled(true);

webView.buildDrawingCache();

Bitmap bitmap = Bitmap.createBitmap(webView.getMeasuredWidth(),

webView.getMeasuredHeight(), Bitmap.Config.ARGB_8888);

Canvas canvas = new Canvas(bitmap);

Paint paint = new Paint();

int height = bitmap.getHeight();

canvas.drawBitmap(bitmap, 0, height, paint);

webView.draw(canvas);

if (bitmap != null) {

try {

String filePath = Environment.getExternalStorageDirectory()

.toString();

OutputStream out = null;

File file = new File(filePath, "/webviewScreenShot.png");

out = new FileOutputStream(file);

bitmap.compress(Bitmap.CompressFormat.PNG, 50, out);

out.flush();

out.close();

bitmap.recycle();

} catch (Exception e) {

e.printStackTrace();

}

}

}

}, 1000);

}

});

希望这可以帮助..!

截获android屏幕服务,如何捕获android设备屏幕内容?相关推荐

  1. android 定位服务和wifi,android WIFI定位和基站定位实现

    android WIFI定位和基站定位实现 来源:互联网 作者:佚名 时间:2015-04-01 13:38 关于定位原理网上很多,这里就不多说了.下面说怎么实现的,直接贴代码如下:首先是Util类: ...

  2. 使用Android Studio设置调试的外接设备屏幕分辨率

    方法总结如下: 1.点击Android Studio下方的Terminal 2.输入以下代码(这边以设置分辨率720x1920为例): adb shell wm size wm size 720x19 ...

  3. android保持服务不休眠,Android开发保持屏幕常亮和CPU不休眠唤醒状态

    安卓手机 APP 开发,有的时候需要屏幕长时间亮着,也就是不锁屏,这时CPU会一直处于不休眠唤醒状态.下面介绍两种方法. 方法一:通过 PowerManager 实现. 此种方法会在软件安装时用户可以 ...

  4. android调服务不更新,android – OnUpdate()不调用小部件服务

    我正在为我的应用程序开发一个小部件.窗口小部件名称是历史记录,当用户浏览任何URL时,我将其存储在本地数据库中,从中列出该窗口小部件. 当我打开小部件时,它从本地数据库中获取所有细节并在小部件的列表视 ...

  5. android 辅助服务 简书,Android AccessibilityService使用

    测试demo主要使用了Android 的无障碍辅助服务(AccessibilityService),主要注意是 1. 开启服务,绑定目标app的监听(demo中根据包命绑定了体积计算的app),需要在 ...

  6. android必须服务,说说在Android如何使用服务(Service)的方法

    Android 服务(Service)适合执行那些不需要和用户交互而且还要求长期运行的任务. 服务的运行不依赖于任何用户界面,即使 APP 被切换到后台,或者打开了另外一个 APP,服务仍然能够保持正 ...

  7. android同步服务启动失败,android – FirebaseCloudMessaging:FirebaseInstanceId后台同步失败 – SERVICE_NOT_AVAILABLE...

    我已在Android中使用Firebase云消息传递(FCM)API进行推送通知.当我实现那个时间完美的工作,但现在它找不到谷歌播放的服务. 错误是: FirebaseInstanceId: back ...

  8. android中服务播放音乐,android中用Service播放音乐

    一般的Android应用程序的音乐可以分为背景音乐和点击各种控件时的音效,前者一般为比较大的音乐文件,后者一般为比较小的音乐.在Android中一般用MediaPlayer类处理比较大的音频文件,用S ...

  9. android 定位服务源码,android gps定位app源码(GpsTracker)

    [实例简介]做到了 gps 开启关闭后的提醒 以及地理位置记录(经纬度) [实例截图] [核心代码] package android.gpstracker; import android.app.Ac ...

最新文章

  1. istio入门(05)istio的架构概念2
  2. CentOS6.9中搭建FTP服务器
  3. unity3d技术摄像头跟随_堪比灯厂,新时代智能安全灯光技术,体验大众迈腾GTE IQ.LIGHT...
  4. mockito mock void方法_Spock如何模拟抽象类方法
  5. 对象的单数组表示(用单数组实现链表-不一样的链表实现)
  6. 线性代数应该这样讲(一)
  7. zhongdexing-pro
  8. python的setdefault方法
  9. decimal类型对象里面定义什么类型_数据库数据类型decimal理解
  10. 电脑公司ghost win8 64位家庭克隆版v2020.05
  11. PHP中使用数组转换成Json格式出现中文乱码解决方案
  12. MTK移植大全(参考)建议收藏!
  13. 计算机专业术语enabled,电脑上的BIOS设置Disabled和Enabled是什么意思?选哪个?
  14. linux4 系统下载,syslinux下载|
  15. BERYL和COMPIZ FUSION的安装与使用
  16. 想要制作好看的壁纸,有CorelDRAW就够啦
  17. 2022家博会正式开幕:国保保密科技体验馆邀您共襄盛举,共谋商机!
  18. debian 笔记本 准系统 RTL8822BE 8723 8192 8188 8168 8111 8107 8821-22 等PCIE 无线网卡蓝牙驱动安装
  19. python循环语句打印三角形_python循环输出三角形图案的例子
  20. 人工智能的发展前景如何?做人工智能收入高吗?

热门文章

  1. qMISPlat入门级使用问题解答一
  2. ASP.NET Core中的OWASP Top 10 十大风险-SQL注入
  3. 使用docker搭建redis主从
  4. Linux中的vi和vim
  5. 我的未来计算机作文,我的未来作文(精选4篇)
  6. 利用pdf.js开发嵌入pdf显示,以及利用jquery-ui左右分栏显示
  7. C语言试题六十一之请编写函数fun:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成新串放在t所指数组中。
  8. React Native之react-native bundle --platform android --dev false --entry-file index.js --bundle失败
  9. C和指针之字符串strchr、strpbrk、strstr
  10. 《零基础看得懂的C++入门教程 》——(10)面向对象