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

}

});

希望这可以帮助..!

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐