关于flutter:flutter截图方案

截图分两种:

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库来截取。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理