当前位置:   article > 正文

webview介绍_webview ondeviceready

webview ondeviceready

加载网页,为何我们要是用网页,因为写一个网页可以在任何的操作系统上面上实现加载显示

跨平台   更便于维护   这个地方  我们如果在页面上写错了之后    也不需要重新打包生成apk

但是网页的时候  我们仅仅更改一下网页   这个时候就可以了。  

这个就是他的优点

维护性也比较简单      就是我们的只需要更改服务器端的代码来实现。



这样的话  我们就可以  写一个页面    节约成本。


我们android中其实就是借助webview实现我们加载页面      

此时但是我们需要实现  借助一个桥梁实现我们的来更改xml文件。


html页面不需要我们自己写    我们只要学会 调用相关方法    进行一定的更改就可以了。



所以 我们的重点就是熟练掌握webview的使用。


相关方法:


注意  我们的webview 是加载一个具体的页面

随后我们可以对这个加载的页面进行相关的设置。


这个时候我们需要借助websetting来实现我们的设置。


设置我们的页面是否缩放,就是当我们加载的页面比较大的时候  

我们是否需要将页面

webSet.setDefaultZoom(ZoomDensity.FAR);

设置为高强度的缩放。


设置我们页面的排列算法  就是我们的页面一边导航  一边内容   是否需要两边同时出现。

实用的方法

webSet.setLayoutAlgorithm();


页面显示的是否好看   这个是我们的服务器端设置的    


系统还存在缩放按钮:

webset.setBuiltInZoomControls(true);

就是可以实现我们的webview自动缩放。


我们还可以在webview上面设置一个onTouch事件

webset.setOnTouchListener

注意我们的touchListener你我们的OnTouch事件的更优先执行。


注意我们这个时候要返回false   否则回应向我们的webview的一些功能就不可以执行了。



注意 如果我们进行相关的设置  这个时候我们再点击一些链接的时候,将会使用系统自带的浏览器将页面打开

但是我们想在自己的webview打开相关的页面。


这个时候我们需要借助一个对象    这个对象就是WebViewClient        这个对象里面封装了相关的方法,

比如是否实现再次加载   在webview页面中实现我们的加载。


此时我们在webview页面里面加载网页页面的时候,我们可以  添加监听事件实现我们的后退  页面直接的后退。



注意  同时我们实现webview加载进度的现实。 这个时候我们需要借助WebViewClient来实现。


这个时候我们需要重写

onPageStarted

onPageFinished

这两个方法来实现。



但是我们想获得具体的加载进度

我们需要借助对象  webChromeClient

借助这个对象我们可以获得webview加载页面时的具体的进度值。



菜单 :

注意我们是在页面上实现创建相关的菜单

相关的方法就是:

创建菜单  就是我们点击menu键的时候   实现我们的创建

public boolean onCreateOptionsMenu(Menu menu){

menu.add(groupid,itemid,order,title);

menu.add(0,0,0,"前进");

menu.add(0,0,1,"后退");

menu.add(0,0,2,"刷新");

menu.add(0,0,3,"测试");

return  true;

}


每次点击menu键的时候, 在菜单显示之前调用。

public boolean  onPrepareOptionsMenu(Menu menu){

}


public  boolean onOptionsItemSelected(MenuItem menuitem){


switch (item.getOrder()){

case 0:

if(webview.canGoForward()){

webview.goForward();

}


break;


case 1:


break;


case 2:


break;


case 3:


break;

}

return true;

}


上面就是实现我们的在  页面上创建相关的菜单   进而对页面进行相关的操作。



下面就是实现我们的最简单的与页面进行交互的


webview.addJavascriptInterface(new Object(){

public void callFormJs(String msg){

showToast(msg);

}

},"itheima");


给我们的webview添加一个接口,    obj  java对象 

interfaceName 字符串

在网页中  创建一个js对象   命名:interfaceName 字符串  同时   js对象  拥有和obj java对象

相同的属性  方法;



此时我们需要添加 打开对js的支持

webset.setJavaScriptEnable(true);


下面就是我们在后台如何实现我们调用java中的相关方法。





注意  如果我们加载asset目录下面的html页面的时候  这个时候应该这样写

file:///android_asset/test.html  ;



java端调用后台的方法的时候 如下:


webView.loadUrl("javaScript:testJava();");

注意  我们在前面要加上javaScript:       这个时候就可以直接调用后台的相关方法。






Html5实现我们的本地存储  以及远端存储。


注意  我们两种数据存储方式    他们是将数据存储在浏览器上面

所以  我们在使用不同的浏览器的时候,会得到不同的数据值。



一个会话   就是我们在打开一个网页的时候    虽然在刷新    但是我们没有将这个页面关闭     这个时候  就算属于是一次回话

但是我们此时将这个页面关闭     则这次这个回话就会关闭了,  第二种数据存储方式就会将这个数据不进行保存。



注意  针对我们两种数据的存储方式    要注意 我们的localStorage  这个存储    我们在访问网页的时候   可以将一些  不经常变化的部分保存在它里面  

当我们再次打开页面的时候   就不需要再次下载,                                                                   


html5中localStorage的应用。离线存储的应用。






phoneGap  的应用:


一、java代码部分:

1、导入phoneGap.jar

2、添加相应的权限

3、修改主Activity为继承自类DroidGap

4、在主类中用super.loadUrl(),加载网页

5、添加xml 配置文件


二、网页代码部分:
1、引入phoneGap.js
2、编写html页面。确保phoneGap加载完成后,才使用。
document.addEventListener("deviceready", onDeviceReady, false);



定义javascript接口文档
  js文档的编写可以参考phoneGap源代码中的示例来写。
js接口文档中定义的内容有:
1、service名字和与之对应的对象
2、每个方法对应的action
3、每个方法的参数的类型
4、方法返回值的类型
在文档中先要判断该文档是否已经加载,并在最后,确保PhoneGap加载此文档。


java端实现js文档中定义的方法
新建类继承Plugin并实现execute方法
根据js文档中定义的action来进行分别的处理。
在资源文件中关联js文档与java类
如:<plugin name="HmTestServer" value="com.hm.webview.test4.plugin.TestOne"/>其中name要与js接口文档中定义的service命名要一致。
编写网页端代码
修改主Activity改为继承DroidGap
 调用 super.loadUrl(url)即可。
























































































































声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/97626
推荐阅读
相关标签
  

闽ICP备14008679号