El comportamiento deseado al abrir una aplicación es:
Mainactivity.java
myWebView.addJavascriptInterface(new JavaScriptInterface(this, cookieManager),"Android"); JavaScriptInterface.java
@JavascriptInterface public void hideOrRemoveSplashScreen() { objetcSplashScreen.doRemoveSplashScreen(); //... }Página HTML (solo para páginas cargadas con la aplicación, debe detectarse con el Agente de usuario)
$(function() { try{Android.hideOrRemoveSplashScreen()}catch(e){}; });Actividad_principal.xml
<?xml version="1.0" encoding="utf-8"?> <androidx.swiperefreshlayout.widget.SwipeRefreshLayout android:id="@+id/pullfresh" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <WebView android:id="@+id/msw_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerInParent="true"></WebView> </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>No sé cómo cargar en paralelo un simple .png como pantalla de inicio con el resto de la aplicación y luego, cómo eliminarlo.
Parece que esto está funcionando, no estoy seguro de que sea la manera correcta:
<?xml version="1.0" encoding="utf-8"?> <androidx.swiperefreshlayout.widget.SwipeRefreshLayout android:id="@+id/pullfresh" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageView android:id="@+id/splashimg" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/darkblue" android:src="@drawable/splash" /> <WebView android:id="@+id/msw_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerInParent="true"></WebView> </LinearLayout> </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>Luego agregue objetos en MainActivity.java
container = findViewById(R.id.container); splash = findViewById(R.id.splashimg);Y finalmente elimine la carga de imágenes dentro de Oncreate
myWebView.setWebChromeClient(new MyChrome() { [...] @Override public void onProgressChanged(WebView view, int newProgress) { if (newProgress == 100){ container.removeView(splash); } super.onProgressChanged(view, newProgress); } } Al cargar, la primera página activa removeView y un cuerpo blanco parpadea hasta que la página está completamente cargada, pero se puede arreglar configurando <body style='background-color'>