/** * WebView :在Android 应用程序中加载网页的视图 * 1.既可以加载外网服务器上的页面,也可以访问加载本地的静态页面 * 2.基于WebKit内核 * 3.webView加载的网页会默认缓存到database 或 cache文件夹下 * InternalStorage(内部存储)里面的 - 持久化存贮 (第二个月的时候会学到) * 4.webView的生命周期- 与Activity 的生命周期相对应3个 * <p> * 这个地方是写java代码的 * * 回顾一下知识点: * 1. webView使用loadUrl方法来加载页面 * 2.默认是会打开手机默认浏览器来加载网页 * 3.想要在应用程序内打开网页 需要给webView设置 WebViewClient * 4.getSettings方法可以获取WebView 的设置选项 * 5.设置支持 javaScript * 6.设置支持缩放 * 7.设置支持自适应屏幕 * 8.设置默认字体 1-72 * 9.设置默认编码格式 * 10.设置缓存 * 11.WebViewClient重写方法 (应用程序内打开网页的方法)(开始加载网页的方法)(网页加载结束的方法)(加载资源的方法)(接受错误的方法) * 12.设置进度监听 setWebChromeClient * 13.三个生命周期 对应Activity的三个生命周期 onResume onPause onDestroy * 14.监听返回键 webView是否可以回到上一级或者去下一级 * canGoBack goBack * canGoForward GoForward * */ public class MainActivity extends AppCompatActivity { private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //实例化视图对象 webView = (WebView) findViewById(R.id.webView); //获取webView 的设置选项 WebSettings settings = webView.getSettings(); //表示使当前的WebView 支持javaScript ××××××!!!!!十分重要的属性 settings.setJavaScriptEnabled(true); //支持缩放 settings.setSupportZoom(true); settings.setDisplayZoomControls(true); //支持缩放缩放工具 settings.setBuiltInZoomControls(true); //屏幕自适应 settings.setUseWideViewPort(true); settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); settings.setLoadWithOverviewMode(true); //设置默认字体大小 范围1-72 之间 settings.setDefaultFontSize(72); //设置编码格式 settings.setDefaultTextEncodingName("utf-8"); //网页缓存模式 settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); // 清除缓存文件夹下的缓存信息 // webView.clearCache(true); // //清除历史信息 // webView.clearHistory(); // //清除webView 缓存的信息 // webView.clearFormData(); //如果我想在手机app内部打开这个网页 该怎么办? //给WebView设置一个WebViewClient 并重写shouldOverrideUrlLoading方法 将网址重新加载一次 webView.setWebViewClient(new WebViewClient() { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); //当页面开始加载的时候执行该方法 Log.d("TAG", "onPageStarted: 页面开始加载了"); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); //当页面加载完成的时候执行该方法 Log.d("TAG", "onPageFinished: 页面加载完成了"); } @Override public void onLoadResource(WebView view, String url) { super.onLoadResource(view, url); //当页面加载资源的时候执行该方法,每加载一个资源该方法就会执行一次 Log.d("TAG", "onLoadResource: 加载资源 : " + url); } @Override public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { super.onReceivedError(view, request, error); //接收网页访问错误的方法 } @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { super.onReceivedSslError(view, handler, error); //当访问的网址是 https 协议的时候错误的时候执行这个方法 } @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); Log.d("TAG", "onProgressChanged: " + newProgress); //newProgress 表示页面加载的进度 if (newProgress == 0) { //开始加载 } if (newProgress == 100) { //加载完成 } } }); } //WebView生命周期写到对应方法中即可 @Override protected void onResume() { super.onResume(); webView.onResume(); } @Override protected void onPause() { super.onPause(); webView.onPause(); } @Override protected void onDestroy() { super.onDestroy(); webView.destroy(); } public void onClick(View view) { //访问外网服务器的页面 //在默认情况下 webView打开一个网址,会启动手机默认浏览器来将这个网页打开 webView.loadUrl("https://www.baidu.com/"); //访问本地的静态页面 (该静态页面是放在assets文件夹下的 所以使用绝对路径来访问) // webView.loadUrl("file:///android_asset/百度一下,你就知道.html"); } //1.监听手机物理返回键 //重写该方法 该方法能监听到所有Android软键盘 虚拟键盘上的所有按键 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { //判断按下的按钮是不是 返回键 if (keyCode == KeyEvent.KEYCODE_BACK) { //如果是返回键 判断 网页是否能够回退 if (webView.canGoBack()) { //如果网页存在上一级 则回到上一级 webView.goBack(); //此处一定要返回true 表示消费了这个事件! return true; } //是否可以向前 // if (webView.canGoForward()){ // webView.goForward(); // } } return super.onKeyDown(keyCode, event); } }
Android第十七天WebView初识
最新推荐文章于 2024-08-21 03:13:21 发布