赞
踩
加载网页,为何我们要是用网页,因为写一个网页可以在任何的操作系统上面上实现加载显示
跨平台 更便于维护 这个地方 我们如果在页面上写错了之后 也不需要重新打包生成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)即可。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。