【drawable】progress_style.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 總進度的顔色 -->
<item android:id="@android:id/background">
<shape>
<solid android:color="" />
</shape>
</item>
<!-- 緩存的顔色 -->
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<solid android:color="" />
</shape>
</clip>
</item>
<!-- 目前進度的顔色 -->
<item android:id="@android:id/progress">
<clip>
<shape>
<solid android:color="" />
</shape>
</clip>
</item>
</layer-list>
【layout】
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fadingEdge="none"
android:overScrollMode="never" />
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="8px"
android:layout_gravity="top"
android:progressDrawable="@drawable/progress_style"
android:visibility="gone" />
</FrameLayout>
【activity】
WebView webView;
ProgressBar progressBar;
private void initView() {
webView = findViewById(R.id.webview);
progressBar = findViewById(R.id.progressBar);
WebSettings webSettings = webView.getSettings();
//如果通路的頁面中要與Javascript互動,則webview必須設定支援Javascript
webSettings.setJavaScriptEnabled(true);
//網頁在app内打開
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (newProgress == ) {
progressBar.setVisibility(View.GONE);//加載完網頁進度條消失
} else {
progressBar.setVisibility(View.VISIBLE);//開始加載網頁時顯示進度條
progressBar.setProgress(newProgress);//設定進度值
}
super.onProgressChanged(view, newProgress);
}
});
}
擴充:騰訊X5
用于解決過,伺服器擷取不到cookie的情況
豐富:webview詳細
public void webViewSetting(WebView webView, final ProgressBar progressBar) {
WebSettings webSettings = webView.getSettings();
//如果通路的頁面中要與Javascript互動,則webview必須設定支援Javascript
webSettings.setJavaScriptEnabled(true);
//縮放操作
webSettings.setSupportZoom(true); //支援縮放,預設為true。是下面那個的前提。
webSettings.setBuiltInZoomControls(true); //設定内置的縮放控件。若為false,則該WebView不可縮放
webSettings.setDisplayZoomControls(false); //隐藏原生的縮放控件
//設定自适應螢幕,兩者合用
webSettings.setUseWideViewPort(true); //将圖檔調整到合适的大小
webSettings.setLoadWithOverviewMode(true); // 縮放至螢幕的大小
String userAgentString = webSettings.getUserAgentString();
webSettings.setUserAgent(userAgentString);
webSettings.setDatabaseEnabled(true);
webSettings.setDomStorageEnabled(true);
webSettings.setAllowFileAccess(true);
webSettings.setAppCacheEnabled(true);
LogUtil.e("TAG", "userAgentString:" + userAgentString);
//覆寫WebView預設使用第三方或系統預設浏覽器打開網頁的行為,使網頁用WebView打開
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
//webview加載進度
webView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
}
});
}