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

使用以下代码: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);

}

});

希望这可以帮助..!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303740.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Lanchester战争模型:用可分离变量的微分方程占卜战事

看过国产的战争题材电视剧《亮剑》的各位老铁一定熟悉李云龙集结重兵攻打县城的故事。在故事中,李云龙利用人数上的优势对平安县城进行了围点打援,最后用二营长的意大利炮消灭了城楼上的鬼子官。但是众所周知,抗日时期中国军队的单兵作战能力…

微软软件安装平台

http://www.microsoft.com/web/downloads/platform.aspx 转载于:https://www.cnblogs.com/kkun/archive/2011/03/09/1978039.html

如何在 C# 中使用 yield

yield关键词是在 C# 2.0 中被引入的,我们都知道实现了 IEnumerable 接口的类都可以用于被 foreach 迭代,这是因为 IEnumerable 接口中提供了一个可迭代的 GetEnumerator() 方法,代码定义如下:public interface IEnumerable{IEnume…

通过听力写代码?盲人程序员就是这样做的

一Michael Forzano,Amazon2018 年 3 月,Amazon 官网「工作在 Amazon」栏目有一篇文章,介绍了他们的一位盲人程序员 Michael Forzano。(视频来自:阑夕)Amazon 软件工程师 Michael Forzano 出生就因先天疾病而…

android修改电量颜色,android状态栏电池颜色?

鸿蒙传说/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/BatteryControllerImpl.java在Intent.ACTION_BATTERY_CHANGED broadcast处理中调用fireBatteryLevelChanged()方法fireBatteryLevelChanged中会回掉BatteryStateChangeCallbackframewor…

access 战地1不加入ea_炒牛肉时,想要牛肉嫩滑又不老,只需加入1样东西,很多人都不懂...

炒牛肉时,想要牛肉嫩滑又不老,只需加入1样东西,很多人都不懂冬季滋补怎么能少得了牛肉,牛肉中含有非常丰富的营养成分,其中蛋白质的含量尤为丰富还有大量的氨基酸,能够提高身体的抗病能力,特别适…

张亚勤:PC之外的争夺战

文 / 陈振烨 尽管经常有公司抢走微软的风头,但当今世界,微软仍然是当之无愧的IT霸主。过去几个季度,微软各项核心数据非常给力,2011财年第一季度净利润54亿美元,营收162亿美元;而2010财年187.6亿美元的净利…

优化 ASP.NET Core Docker 镜像的大小

在这容器化的世界里,我们已经很少直接通过文件发布来运行asp.net core程序了。现在大多数情况下,我们都会使用docker来运行程序。在使用docker之前,我们往往需要打包我们的应用程序。asp.net core程序的镜像打包,网上有很多教程&a…

监督学习:KNN(K-近邻)算法实现手写数字识别的三种方法

没人会看的开场白:本来觉得自己从数据建模转人工智能方向应该问题不大(自我感觉自己算法学的不错)。结果一个K-邻近实现手写数字识别的代码就让我改了三四天。虽然网上这方面的代码是很多,但是我运行了好几个,结果都不…

xp怎样安装android-studio,Xposed 框架的安装

借鉴:安装流程:安装 雷电模拟器3.93下载安装xposed框架。xposed 框架在Dalvik 虚拟机和ART虚拟机上的安装不一样(至于ART虚拟机和Dalvik虚拟机的区别,可以参阅 文章)如果Android 版本不小于 5.0,就是ART版本的虚拟机,需…

cta策略 有哪些_CTA 主流的交易策略都有哪些?

CTA策略(Commodity Trading Advisor Strategy)称为商品交易顾问策略,也称作管理期货。主要通过在基本和技术分析中导入数量模型,并借助计算机系统根据数量模型产生的买卖信号进行投资交易。CTA基金策略完全通过不同期货合约及调期合约多/空头寸进行投资&…

饭碗和大师

最近受到一些同事的质疑,说你老刘只关心市场销售,对做技术的同事漠不关心,因为你的博客里头就没有怎么提过! 当然首先得向这写技术大师和小师们道歉!其实老刘并非不关心做技术的同事,只是因为老刘自愧对…

在 .NET Core 5 中集成 Create React app

翻译自 Camilo Reyes 2021年2月22日的文章 《Integrate Create React app with .NET Core 5》 [1]本文演示了如何将 Create React app 与 .NET Core 集成,以生成一个移除了几个依赖项的脚手架。Create React app 是社区中创建一个全新 React 项目的首选方式。该工具…

程序员找不到对象是因为还没遇到一个有远见的丈母娘

当别人在放肆秀恩爱的时候,程序员单身狗们在角落里瑟瑟发抖。别人去网站相亲找到对象,程序员去相亲找到BUG。其实,你找不到对象是因为你还没遇到一个有远见的丈母娘。都说程序员很难找到对象,就知道整天对着键盘一直敲敲敲&#x…

axios请求拦截器错误_Axios使用拦截器全局处理请求重试

Axios拦截器Axios提供了拦截器的接口,让我们能够全局处理请求和响应。Axios拦截器会在Promise的then和catch调用前拦截到。请求拦截示例axios.interceptors.request.use(function (config) {// 在发起请求请做一些业务处理return config;}, function (error) {// 对…

第十一章项目沟通管理重点--转载

《信息系统项目管理师教程》第十一章项目沟通管理重点 11.1项目沟通管理的重要性 1、编码、通信、传播媒介、噪声、解码。确认是接收到信号,但并不需要理解,而反馈信息指读懂信息,解码并回复。 2、沟通障碍:认识障碍、…

WPF 如何将IconFont图标转成Geometry

之前每次使用IconFont图标,都要去下载一个png图片,每次颜色什么的改了,都要重新下载,太苦逼了。现在好了,终于找到如何方便快速地使用IconFont图标了。是应该的演示如何从IconFont网站上找到Geometry先看看效果吧&…

给所有想从事软件研发的年轻工程师的忠告与建议

图片来源:Fargo Season 3一、我为什么写这篇文章:这几天,在某个IT论坛的软件培训与认证栏目中,看到了很多处于迷惑之中的人们,也看到了许多大家普遍感到困惑的问题,写此文章的目的,是想将我这些…

谁今天收到鸿蒙系统推送,鸿蒙系统正式推送,只有部分高端机才能收到

原标题:鸿蒙系统正式推送,只有部分高端机才能收到华为已经对鸿蒙2.0系统开始进行推送更新,从华为推出鸿蒙系统概念已经时隔几年了,如今华为把ppt系统映射进现实是真正为自己正名了,而且据华为陈述鸿蒙2.0已经能达到安卓…

layui导入模板数据_java+layui的Excel导入导出

//导入PostMapping(value "importData")ResultJson importData(RequestParam MultipartFile file) {ResultJson resultJson newResultJson();List importData null;try{importData ExcelUtil.importExcel(file.getInputStream(), ProjectJson.class);}catch(IOExce…