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

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 中响应该链接,必须覆盖 webview WebViewClient 对象:
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.                   );      

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值