Page blanche entre Splash screen et affichage webview
Résolu
Ilyass2020
Messages postés
9
Statut
Membre
-
Ilyass2020 Messages postés 9 Statut Membre -
Ilyass2020 Messages postés 9 Statut Membre -
bonjour
je le dit et je le répète , je suis pas doué en java , mais j essai toujours de développer mon code webview, cette fois le probleme c'est que quand je lance mon appli il y'a un vide en blanc entre le splash screen et l affichage du contenu. je vous pris de m aider.
mon code :
MainActivity.java
AndroidManifest.xml
je le dit et je le répète , je suis pas doué en java , mais j essai toujours de développer mon code webview, cette fois le probleme c'est que quand je lance mon appli il y'a un vide en blanc entre le splash screen et l affichage du contenu. je vous pris de m aider.
mon code :
MainActivity.java
package com.akssa.groupe;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.RelativeLayout;
public class MainActivity extends AppCompatActivity {
WebView webView;
RelativeLayout relativeLayout;
Button btnNoInternetConnection;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// remove title
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main);
webView = (WebView) findViewById(R.id.webView);
// loadUrl
webView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("tel:")) {
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url));
startActivity(intent);
return true;
}
return false;
}
});
btnNoInternetConnection = (Button) findViewById(R.id.btnNoConnection);
relativeLayout = (RelativeLayout) findViewById(R.id.relativeLayout);
checkConnection();
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
//
webSettings.setDomStorageEnabled(true);
//
webSettings.setUseWideViewPort(true);
webSettings.setAllowContentAccess(true);
webSettings.setAllowFileAccess(true);
webSettings.setAppCacheEnabled(true);
btnNoInternetConnection.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
checkConnection();
}
});
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()){
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
public void checkConnection(){
ConnectivityManager connectivityManager = (ConnectivityManager)
this.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo wifi = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
NetworkInfo mobileNetwork = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (wifi.isConnected()){
webView.loadUrl("https://www.groupe-alakssa.ma/");
webView.setVisibility(View.VISIBLE);
relativeLayout.setVisibility(View.GONE);
}
else if (mobileNetwork.isConnected()){
webView.loadUrl("https://www.groupe-alakssa.ma/");
webView.setVisibility(View.VISIBLE);
relativeLayout.setVisibility(View.GONE);
}
else {
webView.setVisibility(View.GONE);
relativeLayout.setVisibility(View.VISIBLE);
}
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.akssa.groupe">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name="com.akssa.groupe.SplashScreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.akssa.groupe.MainActivity">
</activity>
</application>
</manifest>
5 réponses
-
re,
Sûrement le temps que la page se charge.
Généralement, on affiche un loader lors du chargement et on le cache lorsque la page est chargée.
Un peu comme cela :
progressBar.setVisibility(View.VISIBLE); webView.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.startsWith("tel:")) { Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url)); startActivity(intent); return true; } return false; } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); progressBar.setVisibility(View.GONE); } }); -
je place le loader sur le splashScreen ?? tu peux m aider la ??
-
voila le code SplashScreen.java
package com.akssa.groupe;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
public class SplashScreen extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash_screen);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
startActivity(new Intent(SplashScreen.this,MainActivity.class));
finish();
}
},2000);
}
} -
ça veux dire que en peux pas remplacerle progressBar par le splashscreen , le temp ou le webview ce charge .
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -