一次Android WebView使用的苦逼体验之旅

本文详细记录了一次在Android应用中使用WebView遇到的各种问题及解决方案,从基础设置到处理点击事件、文件上传,再到自定义行为,揭示了WebView在实际应用中的复杂性和需要注意的细节。
摘要由CSDN通过智能技术生成

有时候有这么样的需求,我们想在自己的原生android app中嵌入其它功能模块,而这些模块的实现往往早就有BS模式的了,所以简单期间,直接拿过来用吧。

多亏了webView控件,让我们的app可以充当浏览器的功能浏览网页,如果网页已经是屏幕自适应的(各种框架bootstrap啊,amazeui啊,不拉不拉不拉的),那么效果更好!


那么问题来了,我们要怎么使用webView呢?

版本1:

【首先webView控件准备好,其次<uses-permission android:name="android.permission.INTERNET" /> 也不要忘了!】

WebView webView= (WebView) findViewById(R.id.webview);
webView.loadUrl(http://www.baidu.com);

哈哈哈哈,代码太简单了,是不是马上就有效果了得意

高兴得太早了!

怎么有些按钮点了没效果,网页显示出来好像和预想的差太多!!!!

版本2:【添加一些设置项】

 //允许JS执行

webView.getSettings().setJavaScriptEnabled(true);

类似的还有如下这些设置【用到的时候查文档吧!】

//设置WebView的一些缩放功能点
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.setHorizontalScrollBarEnabled(false);
webView.getSettings().setSupportZoom(true);
//设置WebView可触摸放大缩小
webView.getSettings().setBuiltInZoomControls(true);
webView.setInitialScale(70);
webView.setHorizontalScrollbarOverlay(true);
//WebView双击变大,再双击后变小,当手动放大后,双击可以恢复到原始大小
//webView.getSettings().setUseWideViewPort(true);
//提高渲染的优先级
webView.getSettings().setRenderPriority(RenderPriority.HIGH);
//把图片加载放在最后来加载渲染
//webView.getSettings().setBlockNetworkImage(true);
//用WebView将字符串以HTML的形式显示出来
webView.loadDataWithBaseURL("fake://not/needed", <p>zzz</p>, "text/html", "utf-8", "");

//listview,webview中滚动拖动到顶部或者底部时的阴影
webView.setOverScrollMode(View.OVER_SCROLL_NEVER);
webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);//使用缓存
WebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); //默认不使用缓存!
webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); //取消滚动条白边效果

好了,大致满足我们的需求了。

等等,怎么点击超链接都是用的外部浏览器打开的啊,我还是想继续用webView打开!!!

下面介绍一个东西:webview.setWebViewClient(new WebViewClient());

WebViewClient就是帮助WebView处理各种通知、请求事件的,我们可以自定义WebViewClient,并重写里面的方法

常见的如下:

版本3:

webview1.setWebViewClient(new WebViewClient()
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
         view.loadUrl(url);
         return true;
     }

);
当点击超链接时会触发该方法,返回true表明还是在webView中进行跳转不会跳到浏览器打开!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值