webView简单用法: 1.打开一个网页
mContentWedView.loadUrl("http://www.baidu.com");
1.1 onCreate 的初始化
mContentWedView = (WebView) findViewById(R.id.wv_contentWebView);
mProgressBar = findViewById(R.id.pb_loading);
mBarProgress = findViewById(R.id.pb_bar_prgress);
mBarProgress.setMax(100);
2.相关设置
WebSettings settings = mContentWedView.getSettings();
settings.setDisplayZoomControls(true); // 是否显示放大缩小控件
settings.setLoadWithOverviewMode(true); // 缩到屏幕大小
settings.setJavaScriptEnabled(true); // 设置支持js功能
settings.setDomStorageEnabled(true); // 关于某些标签不支持的问题
//settings.setTextSize(WebSettings.TextSize.LARGER); // 设置字体大小
// 启动缓存
settings.setAppCacheEnabled(true);
// 设置缓存模式
settings.setCacheMode(WebSettings.LOAD_DEFAULT);
3.基本回调方法
mContentWedView.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
Log.d(TAG, "onPageStarted: ");
mProgressBar.setVisibility(View.VISIBLE);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.d(TAG, "onPageFinished: ");
mProgressBar.setVisibility(View.INVISIBLE);
}
// 所有的链接都会走这个方法
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
mContentWedView.setWebChromeClient(new WebChromeClient(){
// 加载的网页进度
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
Log.d(TAG, "onProgressChanged: " + newProgress);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
mBarProgress.setProgress(newProgress,true);
}else {
mBarProgress.setProgress(newProgress);
}
if (newProgress == 100) {
mBarProgress.setVisibility(View.GONE);
}
}
});
4.Activity.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.jqhee.hjq.webviewdemo.MainActivity"
android:orientation="vertical">
<ProgressBar
android:id="@+id/pb_bar_prgress"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
android:layout_height="3dp"
android:indeterminateOnly="false"
android:max="100"
android:progressDrawable="@drawable/progress_bar_states" >
</ProgressBar>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<WebView
android:id="@+id/wv_contentWebView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ProgressBar
android:id="@+id/pb_loading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:indeterminateDrawable="@drawable/custom_progress"
android:visibility="invisible" />
</FrameLayout>
</LinearLayout>
drawable中文件 5.加载指示器 (转圆圈)
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="360" >
<shape
android:innerRadius="15dp"
android:shape="ring"
android:thickness="3dp"
android:useLevel="false" >
<gradient
android:centerColor="#9f00"
android:endColor="#f00"
android:startColor="#fff"
android:type="sweep" />
</shape>
</rotate>
6.进度条
<?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>
<gradient
android:startColor="#66CCFF"
android:centerColor="#66CCFF"
android:endColor="#66CCFF"
/>
</shape>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<gradient
android:startColor="#3366FF"
android:centerColor="#3366FF"
android:endColor="#3366FF"
/>
</shape>
</clip>
</item>
</layer-list>