截获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);
}
});
希望這可以幫助..!
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的截获android屏幕服务,如何捕获android设备屏幕内容?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何在《我的世界》里实现我玩我自己?造一
- 下一篇: 对于学校机房的电脑学校机房如何