截图分两种:
1.原生能力截图
1、原生能力截图分为Android和iOS,
Android不能间接截取蕴含flutter和原生界面的截图,只能独自截取flutter或者原生界面
//android截Native界面外围代码Window window = this.activity.getWindow();View view = this.activity.getWindow().getDecorView().getRootView();view.setDrawingCacheEnabled(true);Bitmap bitmap = Bitmap.createBitmap( view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888); // Bitmap()Canvas canvas = new Canvas(bitmap);view.draw(canvas);
//Android截flutter界面外围代码View view = this.activity.getWindow().getDecorView().getRootView();view.setDrawingCacheEnabled(true);Bitmap bitmap = null;if (this.renderer.getClass() == FlutterView.class) { bitmap = ((FlutterView) this.renderer).getBitmap();} else if(this.renderer.getClass() == FlutterRenderer.class ) { bitmap = ( (FlutterRenderer) this.renderer ).getBitmap();}if(bitmap == null) { Log.println(Log.INFO, TAG, "The bitmap cannot be created :("); return ;}view.setDrawingCacheEnabled(false);
iOS能够间接截取蕴含flutter和原生界面的截图。
// iOS截图外围代码 func takeScreenshot(view: UIView, toImageGallery :Bool = true) { let scale :CGFloat = UIScreen.main.scale UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.isOpaque, scale) view.drawHierarchy(in: view.bounds, afterScreenUpdates: true) let optionalImage :UIImage? = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext()}
非凡状况:
Android须要截取含有flutter与Native的界面,能够别离独自截取flutter界面和Native界面,获取到两个bitmap,而后做一个bitmap合并,最终失去flutter与native界面的截图
2.flutter能力截图
2、flutter能力截图能够应用screenshot库来截取。