WebView

1.使用WebView不要忘记加 <uses-permission android:name="android.permission.INTERNET"></uses-permission>

  虽然WebView也继承自View,但它的包名是ndroid.webkit

 

 2. WebSettings : WebView组件有一个辅助类叫WebSettings,它管理WebView的设置状态,该对象可以通过WebView.getSettings()方法获得。

//得到WebSettings对象,设置支持Javascript的参数

webView.getSettings().setJavaScriptEnabled(true);

//设置可以支持缩放

webView.getSettings().setSupportZoom(true);

//设置默认缩放方式尺寸是far

webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);

//设置出现缩放工具

webView.getSettings().setBuiltInZoomControls(true);

 

3

WebView调用assets目录下的本地网页和图片等资源非常方便,为了让WebView从apk文件中加载assets,Android SDK提供了一个schema,前缀为file:///android_asset/。WebView遇到这样的schema,就去当前包中的assets目录中找内容,如:

webView.loadUrl(file:///android_asset/html/test1.html);

 

 

4.WebChromeClient  和 WebViewClient

与WebView相关的辅助对象,除了WebSettings还有WebChromeClient和WebViewClient。

WebViewClient主要帮助WebView处理各种通知、请求事件,如:
onLoadResource
onPageStart
onPageFinish
onReceiveError
onReceivedHttpAuthRequest

 

WebChromeClient主要辅助WebView处理Javascript的对话框、网站图标、网站title、加载进度等,如:
onCloseWindow(关闭WebView)
onCreateWindow()
onJsAlert (WebView上alert无效,需要定制WebChromeClient处理弹出)
onJsPrompt
onJsConfirm
onProgressChanged
onReceivedIcon
onReceivedTitle

 

如果只是用来处理一些html的页面内容,只用WebViewClient就行了,如果需要更丰富的处理效果,比如JS、进度条等,就要用到WebChromeClient。

 5.WebView调用js函数,并得到返回值,在android中必须注册到webView中一个java对象,并在js函数执行完后,通过这个对象对应的名称调用它的方法来返回值。但是这要求html中每个将被java代码主动调用的js函数必须预先知道有这个对象注册,并且要知道它的回调函数。

这里采用把两个固定的js函数添加到html中,来辅助java代码的调用并得到返回值,这样使其它js函数不必写注册对象的回调代码:
(1)在webView的html中:
<script>
//必须添加进去的函数
function callJs(param,tag)
{
var result=getCallResult(param);
javahome.handleJsResult(result,tag);
}
//必须添加进去的函数
function getCallResult(param)
{
return param;
}
//这是任意函数
function fun1(param)
{
  var a=1+9;
  return param+" --  "+a;
}
</script>
(2)在java类中
//把本类对象以javahome这个名称注册到webView
webView.addJavascriptInterface(this, "javahome");
//在OnTouchListener中获取点击位置的内容

webView.setOnTouchListener(new View.OnTouchListener()
{
   public boolean onTouch(View v, MotionEvent event)
  {
      if(event.getAction()==MotionEvent.ACTION_UP)
     {
       Log.i("raw x,y",event.getRawX()+"   "+event.getRawY());
       Log.i("x,y",event.getX()+"   "+event.getY());
       String str=String.format("elementFromViewportPoint(%f,%f).tagName",event.getX(),event.getY());
       callJs(str,"tag21");
      }
   
    return false;
  }
});

//封装一层,tag用作每次调用的标志,以便回调时辨别

public void callJs(String jsFunParam,String tag)
{
  String str=String.format("javascript:callJs(%s,'%s')",jsFunParam,tag);
  Log.i("loadUrl",str);
  webView.loadUrl(str);
}

//在这个方法中接收js函数调用的返回值。
public void handleJsResult(String str,String tag)
{
  Log.i("handleJsResult "+tag ,str);
}

6.

 

 

 

 

 

 

 

 

 

在firefox地址栏中输入:about:config,会出现配置页面。
Chrome的网页渲染引擎也是webkit

阅读更多
个人分类: android
想对作者说点什么? 我来说一句

Android webview flash

2011年01月11日 577KB 下载

WebView的使用Demo

2014年06月19日 1.26MB 下载

webView的应用

2013年02月27日 65KB 下载

Android WebView实例

2013年04月29日 913KB 下载

Android WebView实现视频全屏

2014年08月25日 84KB 下载

android webview richeditor

2015年09月10日 1.49MB 下载

android webview

2013年10月19日 40KB 下载

Android与WebView交互

2016年10月13日 24.51MB 下载

WebView控件基本使用 Android

2011年08月31日 22KB 下载

webview重载说明

2015年07月22日 6KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭