2016-05-05 3 views
-1

Ich bin Anfänger in Android-Entwicklung, ich habe das Problem, dass ich weiße Seite bekomme, bevor meine webview lädt.So möchte ich diese weiße Seite entfernen, so dass nach dem platsch Bildschirm wird es Webview statt weiße Seite laden, bitte helfen Sie mir bei der Reparatur dieses.Erste weiße Seite Bevor mein Webview lädt in Android Webview App

Hier ist mein Mainactivity.java Source Code:

import android.annotation.SuppressLint; 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.Context; 
import android.graphics.Color; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 
import android.os.Build; 
import android.os.Bundle; 
import android.util.DisplayMetrics; 
import android.view.KeyEvent; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewTreeObserver; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.app.Activity; 
import android.os.Bundle; 
import android.os.Handler; 
import android.support.v4.widget.SwipeRefreshLayout; 
import android.util.Log; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.ProgressBar; 

import java.lang.reflect.Field; 

@SuppressLint("SetJavaScriptEnabled") 
@SuppressWarnings("ResourceAsColor") 



public class MainActivity extends Activity { 



    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 



     final SwipeRefreshLayout swipeView =(SwipeRefreshLayout)findViewById(R.id.container); 
     ConnectivityManager cManager = (ConnectivityManager) getSystemService(this.CONNECTIVITY_SERVICE); 
     NetworkInfo nInfo = cManager.getActiveNetworkInfo(); 

      //assign myWebView to webView 
      final WebView myWebView = (WebView) findViewById(R.id.webView); 


      //Load page URL 
      myWebView.loadUrl("https://mobile-tech2dsk.blogspot.in"); 

      //Enable Javascript 
      WebSettings webSettings = myWebView.getSettings(); 
      webSettings.setJavaScriptEnabled(true); 

      //Link opens in the Webview 

      myWebView.setWebViewClient(new WebViewClient(){ 






       public void onPageFinished(WebView view, String url) { 
        // do your stuff here 

        swipeView.setRefreshing(false); 
       } 



       @Override 
       public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
        super.onReceivedError(view, errorCode, description, failingUrl); 
        myWebView.loadUrl("file:///android_asset/error.html"); 

       } 
      }); 



     swipeView.setColorScheme(android.R.color.holo_blue_dark,android.R.color.holo_blue_light); 

     swipeView.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() 
     { 



      @Override 
      public void onRefresh() 
      { 
       swipeView.setRefreshing(true); 

       (new Handler()).postDelayed(new Runnable() 
       { 
        @Override 
        public void run() 
        { 
         myWebView.loadUrl("javascript:window.location.reload(true)"); 

        } 
       }, 2000); 
      } 
     }); 

     } 

    //Adding go back button for page history 
    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 

     //assign myWebView to webView 
     WebView myWebView = (WebView) findViewById(R.id.webView); 

     // Check if the key event was the Back button and if there's history 
     if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) { 
      myWebView.goBack(); 
      return true; 
     } 
     // If it wasn't the Back key or there's no web page history, bubble up to the default 
     // system behavior (probably exit the activity) 
     return super.onKeyDown(keyCode, event); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 

    } 

Hier ist mein Activity_Main.xml Code:

<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 

    tools:context=".MainActivity" > 




       <WebView 
        android:id="@+id/webView" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" /> 


</android.support.v4.widget.SwipeRefreshLayout> 
+0

plz help me zur Korrektur dieser –

+0

Ihre Seite braucht Zeit, um die Seite zu laden, das ist, warum Sie die weiße Seite sehen. –

+0

Wie kann ich Fortschrittsbalken hinzufügen \ –

Antwort

0

Es scheint, Ihre webview Zeit nimmt die Webseite zu laden, so dass Sie sollte stattdessen eine Fortschrittsleiste hinzufügen.

Sie können Ihre Fortschrittsbalken wie dieser

In Java-Code

final ProgressDialog dialog = new ProgressDialog(MainActivity.this,R.style.MyProgressBar); 
     dialog.setCancelable(false); 
     dialog.setMessage("Loading Your Screen"); 
     dialog.setProgressStyle(android.R.style.Widget_ProgressBar_Small); 
     dialog.show(); 

myWebView.setWebViewClient(new WebViewClient() { 
      public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
       Toast.makeText(getApplicationContext(), description, Toast.LENGTH_SHORT).show(); 
      } 

      public void onPageStarted(WebView view, String url, Bitmap favicon) { 
       //dialog.setMessage("Almost done..."); 
      } 

      public void onPageFinished(WebView view, String url) { 

       dialog.cancel(); 
      } 

     }); 

// Load your Url 
webView.loadUrl("Your Url"); 

Dann fügen Sie Ihr Styling hinzufügen können, wenn Sie

In der XML-styles.xml wollen

<style name="MyProgressBar" parent="android:Theme.Holo.Dialog"> 
     <item name="android:alertDialogStyle">@style/CustomAlertDialogStyle</item> 
     <item name="android:windowBackground">@color/transparent</item> 
     <item name="android:textColorPrimary">#FFFFFF</item> 
     <item name="android:backgroundDimEnabled">false</item> 
     <item name="android:textColor">#FFFFFF</item> 
     <item name="android:textStyle">normal</item> 
     <item name="android:textSize">15sp</item> 
    </style> 

Ihr benutzerdefinierter Dialogstil

<style name="CustomAlertDialogStyle"> 
     <item name="android:bottomBright">@color/blue</item> 
     <item name="android:bottomDark">@color/blue</item> 
     <item name="android:bottomMedium">@color/blue</item> 
     <item name="android:centerBright">@color/blue</item> 
     <item name="android:centerDark">@color/blue</item> 
     <item name="android:centerMedium">@color/blue</item> 
     <item name="android:fullBright">@color/blue</item> 
     <item name="android:fullDark">@color/blue</item> 
     <item name="android:topBright">@color/blue</item> 
     <item name="android:topDark">@color/blue</item> 
    </style> 

In Ihrem Colors.xml

<resources> 
    <color name="transparent">#00000000</color> 
    <color name="blue">#00695C</color> 
</resources> 
+0

versucht, dies dieses Dialog isalso zeigt, nachdem mein webview –

+0

Ok geladen, meine bearbeiten sehen Ich habe die onPageStarted-Nachricht auskommentiert. –

+0

ich verwendete Runnable progressRunnable = neu Runnable() { @Override öffentliche void run() { dialog.cancel(); } }; Handler pdCanceller = neuer Handler(); pdCanceller.postDelayed (progressRunnable, 4000); um den Fortschrittsdialog zu steuern –