Android---webview的用法

来源:互联网 发布:喜羊羊在法国禁播 知乎 编辑:程序博客网 时间:2024/06/05 03:30


基本代码:
Uri uri = Uri.parse("http://www.baidu.com");
Intent intent = new Intent(this,uri);
startActivity(intent);


1.将webview加入你的应用
    <WebView
android:id = "@+id/WebView"
android:layout_width="match_parent"
android:layout_height="match_parent">
    </WebView>


2.使用webview加载页面
    web资源用:webview.loadUrl("http://www.baidu.com");
    本地文件用:webview.loadUr("file:///android_asset/XX.html);
     webview.requestFocus();//是页面获得焦点


3.Mainfest.xml
   <uses-permission andriod:name  = "android.permission.INTERNET"/>


4.处理页面导航
 //覆盖webview默认通过第三方或者是系统浏览器打开网页的行为,是的网页 可以在


webview中打开
webview。loadUrl("http://www.baidu.com");
webview.setWebviewClient(new WebViewClient(){
      @override
      public boolean shouldOverriderUrlLoading(webview view,String url){
            //返回值是true的时候控制网页在webview中打开,false的时候需要用第三方


浏览器打开
view.loadUri(url);
return true;
  }
   //WebViewClient帮助WebView去处理一些页面控制和请求通知
 });
//启用支持JavaScript
WebSettings settings = webView.getSettings();
settings.setJavaScripteEnabled(true);
}
5.后退与前进
  goBack()和goFore();


//改写物理按键---返回的逻辑
@Override
publiv boolean onKeyDown(int keyCode,KeyEvent event){
    if(keyCode == KeyEvent.KEYCODE_BACK){
if(webview.canGoBack()){
    webview.goBack();
    return true;
}else{
     system.exit(0);//退出程序
}
       }
}


6.判断页面加载过程
private ProgressDialog dialog;
webView.setWebChromeClient(new WebChromeClient(){
      public void onProgressChanged(Webview view,int newProgress){
if(newProgress == 100){
closeDialoag();
}else{
openDialog();
}
       }
      private void closeDialog(){
if(dialog!=null&&dialog.isEmpty(0){
dialog.dismiss();

}

}


      private void openDialog(){
if(dialog == null){
dialog = new ProgressDialog(MainActivity.this);
dialog.setTitle("正在加载");
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setProgress(newProgress);
dialog.show()
}else{
    dialog.setProgress(newProgress);//刷新当前的进度
}
      }
});


7.webview缓存的运用
//webview加载页面优先使用缓存加载

setting.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);



0 0