android WebView使用;

    xiaoxiao2026-09-28  15

    现在H5这么火,你在不会使用WebView 你就OUT了。

    今天研究了一天WebView的视频播放功能,可能我的理解能力差,所以研究时间长了点。现在分享一下我的学习经历。

    这是一些基本的使用方法

    <span style="white-space:pre"> </span>/*mWebView.goBack(); //后退 mWebView.goForward();//前进 mWebView.reload(); //刷新*/ mWebView.loadUrl(toUrl); //设置当前在webView中显示 mWebView.setWebViewClient(mWebViewClient); //设置获得当前加载进度; mWebView.setWebChromeClient(mWebChromeClient); //如果当前显示页面有输入框时可以获得焦点 mWebView.requestFocus(); //滚动条风格,为0指滚动条不占用空间,直接覆盖在网页上 mWebView.setScrollBarStyle(0); //获得WebView的设置项; mWebSettings = mWebView.getSettings(); //设置编码格式 mWebSettings.setDefaultTextEncodingName("GBK");//设置字符编码 //设置WebView是否需要进行缓存 mWebSettings.setCacheMode(WebSettings.LOAD_NO_CAHE)//关闭缓存;WebSettings.LOAD_CACHE_ELSE_NETWORK;开启缓存 //设置开启JS mWebSettings.setJavaScriptEnabled(true); //把图片加载放在最后来加载渲染 mWebSettings.setBlockNetworkImage(false); //listview,webview中滚动拖动到顶部或者底部时的阴影 mWebView.setOverScrollMode(View.OVER_SCROLL_NEVER);

    下面试设置前需要启动支持js 

    mWebSettings = mWebView.getSettings(); mWebSettings.setJavaScriptEnabled(true); private WebChromeClient mWebChromeClient = new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { super.onProgressChanged(view, newProgress); //设置当前加载的进度 if (newProgress == 100) { //加载完成 } else { //正在加载一般会在这里显示一个dialog提示加载进度;一般会隐藏WebView等到加载完毕显示; } } @Override public void onShowCustomView(View view, CustomViewCallback callback) { super.onShowCustomView(view, callback); //当点击全屏显示时调用该方法 //这个方法适用于在WebView里 播放视频时,点击全屏播放,调用该接口; } @Override public void onHideCustomView() { super.onHideCustomView(); //在全屏情况下 点击小屏幕显示调用该方法; } }; //为WebView设置该属性; mWebView.setWebChromeClient(mWebChromeClient);

    如果不设置这个属性,WebView.loadUrl(url); WebView加载网络地址时会跳转到浏览器加载,而不是在本页面的WebView加载;

    我用的是Android5.0系统,不加下面代码也是在WebView中加载,只是看到网络有人说会跳转到浏览器;所以我也就这么说了。可能不对,待考证;

    private WebViewClient mWebViewClient = new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { //设置在webView中显示而不是在第三方浏览器中打开 Log.i(TAG, "shouldOverrideUrlLoading: url ---> " + url); view.loadUrl(url); return true; } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); //页面加载完毕后回调的方法 } @Override public void onPageStarted(WebView view,String url,Bitmap favicon){ super.onPageStarted(view,url,favicon) //要加载页面的时候调用该方法; } }; mWebView.setWebViewClient(mWebViewClient);

    以上代码是基础了解的,以后肯定会用到的,下面代码是 在WebView中的页面点击进入另一个页面,当点击back,也就是返回键时,返回上一个页面;

    这个存在一定的bug 有的页面,有的时候返回到首页后,在按返回键,重复加载同一个页面。

    我想一个主意就是将每次跳转的页面存入一个list集合中,每次按返回键跳转回上个页面,但这是很蠢的方法,加入着急实现该功能,就先对付一下,打好标记等想到好的办法在该回来。

    <pre name="code" class="java"> 这个方法是放在Activity当中的 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { //当前点击的是返回键 if (mWebView.canGoBack()){ //判断当前是否可以继续返回 //返回上一个页面; mWebView.goBack(); }else { //WebView已经到达首页 //可以进行结束语句,如finsh()关闭当前Activity 也可以做别的; } return true; } return super.onKeyDown(keyCode, event); } 目前对WebView的基本属性已经进行了解了,如加载页面时,显示dialog,返回键,跳转上一个页面;

    下次分析如何使用WebView实现全屏切换,是在WebView中进行切换哦!!!

    转载请注明原文地址: https://ju.6miu.com/read-1312400.html
    最新回复(0)