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