博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家,
点击跳转到网站
前言: 通过WebView控件可以实现加载网页的效果。
一、加载网页的方法:
二、网页的前进与后退: 相关的几个方法
三、接下来我们以访问网络百度移动站点进行演示
1.首先实现布局页面activity_web_view.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=".WebViewActivity"
android:orientation="vertical"
>
<WebView
android:id="@+id/wv"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
2.在WebViewActivity中进行加载网页的操作:
public class WebViewActivity extends AppCompatActivity {
private static final String TAG = "WebViewActivity";
private WebView wv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_view);
wv = findViewById(R.id.wv);
//加载本地中的html文件
// wv.loadUrl("file:///android_asset/web.html");
//设置支持js否则有些网页无法打开
wv.getSettings().setJavaScriptEnabled(true);
wv.setWebViewClient(new MyClient());
wv.setWebChromeClient(new MyWebChromeClient());
//加载网络url
wv.loadUrl("https://m.baidu.com");
}
class MyClient extends WebViewClient{
//监听到页面发生跳转的情况,默认打开web浏览器
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
//在webView中加载要打开的链接
view.loadUrl(request.getUrl().toString());
return true;
}
//页面开始加载
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
Log.e(TAG, "onPageStarted: ");
}
//页面加载完成的回调方法
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.e(TAG, "onPageFinished: ");
//在webView中加载js代码
wv.loadUrl("javascript:alert('hello')");
}
}
class MyWebChromeClient extends WebChromeClient{
//监听网页进度 newProgress进度值在0-100
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
}
//设置Activity的标题与 网页的标题一致
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
setTitle(title);
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
//如果用户按的是返回键 并且WebView页面可以返回
if (keyCode==event.KEYCODE_BACK&&wv.canGoBack()){
//让WebView返回
wv.goBack();
return true;
}
//如果WebView不能返回 则调用默认的onKeyDown方法 退出Activity
return super.onKeyDown(keyCode, event);
}
}
具体注释已经在代码中给出!