2016-10-17 3 views
0

Я хочу установить диалог прогресса на активность веб-просмотра, ниже мой код, я точно не знаю, где я должен использовать загрузчик.set loader on webview

@SuppressLint("SetJavaScriptEnabled") 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_apnikheti); 
    WebView webView = (WebView)findViewById(R.id.webView1); 
    webView.setWebViewClient(new WebViewClient()); 
    webView.setInitialScale(1); 
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.getSettings().setLoadWithOverviewMode(true); 
    webView.getSettings().setUseWideViewPort(true); 
    webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); 
    webView.setScrollbarFadingEnabled(false); 

    webView.loadUrl("http://www.mywebsite.com"); 

} 

public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    if (Uri.parse(url).getHost().equals("www.example.com")) { 
     // This is my web site, so do not override; let my WebView load the page 
     return false; 
    } 
    // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs 
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
    startActivity(intent); 
    return true; 
}} 
+0

Запуск 'ProgressBar' перед вызовом веб-адрес и закрыть его на' onPageFinished() 'метод – SripadRaj

+0

Возможный дубликат [Добавление Диалог Прогресс в WebView] (http://stackoverflow.com/questions/16849347/add-a-progress-dialog-in-a-webview) – Anjali

ответ

1

Для горизонтального прогресса:

В файле XML, сделать изменения в следующем

<ProgressBar 
    android:id="@+id/progressBar" 
    style="?android:attr/progressBarStyleHorizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/urlContainer" /> 

В вашем WebViewActivity, сделайте изменения следующие

webView = (WebView) findViewById(R.id.webView); 
webView.setWebChromeClient(new MyWebViewClient()); 

progress = (ProgressBar) findViewById(R.id.progressBar); 
progress.setMax(100); 

private class MyWebViewClient extends WebChromeClient { 
    @Override 
    public void onProgressChanged(WebView view, int newProgress) {   
     WebViewActivity.this.setValue(newProgress); 
     super.onProgressChanged(view, newProgress); 
    } 
} 

public void setValue(int progress) { 
    this.progress.setProgress(progress);   
} 

Для диалога прогресса:

В файле XML макет, выполните следующие изменения

<ProgressBar 
     android:id="@+id/progressBar" 
     android:layout_width="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/urlContainer" /> 

В вашем WebViewActivity выполните следующие изменения

webView = (WebView) findViewById(R.id.webView); 
webView.setWebViewClient(new MyWebViewClient()); 

progress = (ProgressBar) findViewById(R.id.progressBar); 
progress.setVisibility(View.GONE); 

private class MyWebViewClient extends WebViewClient { 
    @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 

    @Override 
    public void onPageFinished(WebView view, String url) { 
     progress.setVisibility(View.GONE);    
     super.onPageFinished(view, url); 
    } 

    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     progress.setVisibility(View.VISIBLE);   
     super.onPageStarted(view, url, favicon); 
    } 
} 

Проверьте здесь для более подробной информации ProgressBar while Loading WebView in Android

Update:

заказ здесь open link in WebView itself instead of browser

+0

Я хочу, чтобы все дочерние ссылки моего веб-сайта открывались в том же действии, что и браузер по умолчанию –

+0

, для этого вам нужно вернуть false в 'shouldOverrideUrlLoading () 'каждый раз. –

+0

Проверьте мой обновленный ответ, чтобы открыть дочерние ссылки веб-сайта в том же действии, что и браузер по умолчанию. –

0

вы можете использовать webviewclient таким образом.

webView.setWebViewClient(new WebViewClient() { 

    public boolean shouldOverrideUrlLoading(WebView view, String url) {    
     view.loadUrl(url); 
     return true; 
    } 
    public void onLoadResource (WebView view, String url) { 
     if (progrDialog == null) { 
      progrDialog = new ProgressDialog(YourActivity.this); 
      progrDialog.setMessage("Loading..."); 
      progrDialog.show(); 
     } 
    } 
    public void onPageFinished(WebView view, String url) { 
     try{ 
     if (progrDialog.isShowing()) { 
      progrDialog.dismiss(); 
      progrDialog = null; 
     } 
     }catch(Exception exception){ 
      exception.printStackTrace(); 
     } 
    } 
});