android 混合开发 跳转 Flutter 黑屏问题解决办法
android 混合开发 跳转Flutter 黑屏问题
·
android 混合开发 跳转 Flutter 黑屏问题解决办法
- AndroidManifest添加meta-data:
<meta-data
android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
android:value="true"/>
- 修改主题FlutterActivity 将背景和主题均设置为透明 :
<item name="android:windowBackground">@color/color_00000000</item>
<item name="android:windowIsTranslucent">true</item>
如果这两个不同时设置成透明的话,可能都会显示为黑屏
完整的主题代码:
<style name="FlutterTheme" parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@color/color_00000000</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
</style>
AndroidManifest 完整代码:
<activity
android:name=".activity.MainFlutterActivity"
android:launchMode="singleTop"
android:screenOrientation="portrait"
android:theme="@style/FlutterTheme"
android:windowSoftInputMode="adjustResize|stateHidden">
<meta-data
android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
android:value="true"/>
</activity>
- 初始化布局时,需要先隐藏,在第一贞绘制之后,再显示。 代码如下:
FlutterView mFlutterView = Flutter.createView(this, getLifecycle(), toPage);
GeneratedPluginRegistrant.registerWith(mFlutterView.getPluginRegistry());
ViewG
roup.LayoutParams mParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT);
RelativeLayout layout_view = findViewById(R.id.layout_view);
layout_view.addView(mFlutterView, mParams);
final FlutterView.FirstFrameListener[] listeners = new FlutterView.FirstFrameListener[1];
listeners[0] = new FlutterView.FirstFrameListener() {
@Override
public void onFirstFrame() {
layout_view.setVisibility(View.VISIBLE)
}
};
mFlutterView.addFirstFrameListener(listeners[0]);
R.id.layout_view 是根布局的 id
参考文章:
https://blog.csdn.net/u010479969/article/details/81673711
https://www.jianshu.com/p/218d4414185c
更多推荐
已为社区贡献17条内容
所有评论(0)