2016-05-05 8 views
-1

私はAndroid開発の初心者です。私はWebview負荷の前に白いページが表示されているという問題に直面しています。この白いページを削除して、それは白いページの代わりにwebviewをロードする画面です、これを修正する際に私を助けてください。ここでホワイトページの取得Android WebviewアプリケーションでWebviewが読み込まれる前に

は私のMainactivity.javaソースコードである:ここでは

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); 
    } 

    } 

は私Activity_Main.xmlコードです:

<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はあなたが白のページを見ている理由ですページをロードするための時間を必要とするこの –

+0

ページを固定し、私を助けて。 –

+0

どのように進捗バーを追加することができます\ –

答えて

0

それはそう、あなたのWebViewは、Webページをロードするために時間を割いて、だかられます代わりに進捗バーを追加する必要があります。

あなたは、あなたのXMLのstyles.xml

をしたいなら、あなたは、あなたのスタイルを追加することができ、Javaコード

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"); 

ではこの

のようなあなたのプログレスバーを追加することができます

<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> 

あなたのカスタムのダイアログスタイル

あなたcolors.xmlで
<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> 

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

は私のWebViewのが私の編集を参照して、[OK]を –

+0

をロードした後、このダイアログが表示isalsoこれを試してみました、私はonPageStartedメッセージをコメントアウトしました。 –

+0

私はRunnableを使用しましたprogressRunnable = new Runnable(){ @Override public void run(){ dialog.cancel(); } }; ハンドラpdCanceller =新しいハンドラ(); pdCanceller.postDelayed(progressRunnable、4000);進行状況ダイアログを制御するには –

関連する問題