Android UI界面学习之WebView(网络视图)

本文详细介绍了如何在Android应用中使用WebView加载和显示网页内容。包括配置访问互联网权限、生成WebView组件、设置支持JavaScript、处理链接点击事件、实现浏览器历史记录回退等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android中使用WebView来显示网页内容。使用WebView需要下面几个步骤:

1、在Android.manifest中添加访问互联网的权限:

首先要在manifest.main文件中创建一个webview,然后再activity中定义这个webview然后进行一下相关操作。
1、添加权限:AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web pagenot available错误。
2、在要Activity中生成一个WebView组件:WebView webView = newWebView(this);
3、设置WebView基本信息:
          如果访问的页面中有Javascript,则webview必须设置支持Javascript。
         webview.getSettings().setJavaScriptEnabled(true);  
          触摸焦点起作用
          requestFocus();
          取消滚动条
         this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);
4如果希望点击链接由自己处理,而不是新开Android的系统browser中响应该链接。给WebView添加一个事件监听对象(WebViewClient)并重写其中的一些方法 shouldOverrideUrlLoading:对网页中超链接按钮的响应。 当按下某个连接时WebViewClient会调用这个方法,并传递参数:按下的url 
                onLoadResource   
                onPageStart  
                onPageFinish  
                onReceiveError
                onReceivedHttpAuthRequest

5、如果访问的页面中有Javascript,则webview必须设置支持Javascript ,否则显示空白页面。
Java代码
      webview.getSettings().setJavaScriptEnabled(true);  
6
、如果页面中链接,如果希望点击链接继续在当前browser中响应,而不是新开Android的系统browser中响应该链接,必须覆盖webviewWebViewClient对象:
Java代码
1.   mWebView.setWebViewClient(new WebViewClient(){   
2.       public boolean shouldOverrideUrlLoading(WebView view, String url) {   
3.           view.loadUrl(url);   
4.           return true;   
5.       }   
6.   });  
上述方法告诉系统由我这个WebViewClient处理这个Intent,我来加载URL。点击一个链接的Intent是向上冒泡的,shouldOverrideUrlLoading方法return true表示我加载后这个Intent就消费了,不再向上冒泡了。

7
、如果不做任何处理,在显示你的Brower UI时,点击系统“Back”键,整个Browser会作为一个整体“Back"到其他Activity中,而不是希望的在Browser的历史页面中 Back。如果希望实现在历史页面中Back,需要在当前Activity中处理并消费掉该Back事件:
Java代码
1.   public boolean onKeyDown(int keyCode, KeyEvent event) {   
2.       if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {   
3.           mWebView.goBack();   
4.           return true;   
5.       }   
6.       return super.onKeyDown(keyCode, event);   
7.   }  
对于Android 2.0开始又多出了一种新的方法,对于Activity 可以单独获取Back键的按下事件,直接重写                 onBackPressed 方法即可,代码如下
Java代码
@Override
1
public void onBackPressed() {
2
     // 这里处理逻辑代码,该方法仅适用于2.0或更高版本的sdk
3
    return ;
4
}

这里还有几个知识点:

1)为了让WebView从apk文件中加载 assets,Android SDK提供了一个schema,前缀为"file:///android_asset/"。WebView遇到这样的schema,就去当前包中的 assets目录中找内容。如上面的"file:///android_asset/demo.html"

2)addJavascriptInterface方法中要绑定的 Java对象及方法要运行另外的线程中,不能运行在构造他的线程中,这也是使用Handler的目的。

加上进度条:

  1.  webView.setWebChromeClient(new WebChromeClient() 
  2.                   {          
  3.                           public void onProgressChanged(WebView view, int progress)   
  4.                           {            
  5.                                   activity.setTitle("Loading...");       
  6.                                   activity.setProgress(progress * 100);     
  7.                                   if(progress == 100)            
  8.                                           activity.setTitle(R.string.app_name);       
  9.                                   }      
  10.                           }
  11.                   );      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值