Android 使用 WebView 实现 Hybrid 的思路导引

Android 使用 WebView 实现 Hybrid 的思路导引

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作。

首先看一下标题中的 Hybrid 一词的解释,我们取“混合的“这一解释。

在两年前,曾经有因 html5 的到来,而风及一时的 Hybrid 应用,不可谓好不潇洒。然而,随着试水的人多了,最终连 facebook 也放弃了这一快速构建移动应用的方式,转而做 native 应用来提高用户体验。

移动应用,通常有三种做法,一是native,二是hybrid,三是html页面;

下面回归正题,来看看如何让 native 这种 android 的本地代码与 html 页面中的 javascript 代码能各司其职,互相调用。

本文只涉及基本思路,有了这些基本思路,就等于找到了山体的最薄弱点,开了一个洞,剩下的事情就根据你的实际需要来加细就好了。

这种思路同样适用于 ios 上 WebView 组件与 objective-c 语言本地代码之间的交互,只不过 WebView 组件的使用方式和事件处理方式略有不同,可以参考对应用文档。

Android 应用相关的博文,无不例外,都是先把界面和布局的xml列出来,虽显俗套,不过清晰可见,稍涉繁琐之歉,我更喜欢先看后面,然后根据所看到的组件名,再上界面部分找相应的xml界面元素名以及界面上的显示效果,这种是否有”事件驱动“的意味?我可以暂且叫它”即需驱动“式的界面元素分析方式。

这里再插上那么一小段段费话,来总结一种学习或研究问题的思路方式:

早在2001年我刚接触 VC++ 6.0 开发环境时,一片茫然,后来发现茫然的不是VC++6.0工具本身,也不是C++语言,而是MFC库,当时局方还有一同事也在研究学习之,但他后来放弃了。总结起来,他是拿着一本厚厚的MFC的书从头到尾式的学习研究,而我是根据工作需要,搜点资料,研究一点,弄出来再说,回头再理解。这样MFC库对我来说就没那么庞大了,因为我不去研究它,只是用它对我有用的部分而已,甚至很多功能,最终我都是用WIN32 API来做或C++的函数或自已写。

无论怎样,我是坚持到了最后,纠其原因,可能就是这个”事件驱动“方式的功劳吧,有需要就研究一下需要的部分,而无需关心那么庞大的MFC库,这就是”事件驱动“的好处,虽有目光短浅之歉,但对于没有能力把眼光放远的阶段来说,还倒不如把目光集中在眼前,做好眼前之事。

另想说明敏捷开发中的”测试驱动“,其实和我这里提到的”事件驱动“应该是一个意思,只不过我这里的事件是一种偶然的无防备的事件,可能是公司业务有这种需要了,就要做这个事情,那么我们就要针对这个事情去研究一下相应的技术,实现相应的功能;而”测试驱动“中的测试就应该是做这个事情的一种具体做法,先明确要做的事情,以确定能满足业务需要,然后再编写出针对要做的事情的测试代码,接下来就是实现相应的功能,实现的过程中,以先前编写的测试来随时测试,只要满足要求了,目标就达到了,就无需再进行深入和扩展。

不过,”测试驱动“往往是一种提法,一种精髓的抽象,附着其上的还有很多细节,往往被忽略,致使形而上学害人不浅。

有些时侯测试是不太容易编写出来的,那么就编写个测试用例,手工测试,针对每一个必要的察看部分做以核对即可;

还有些时侯,往往仅达到测试的要求,并不能保证应用的稳定性和安全性,这可能是测试本身并没办法一次性完善,所以测试本身也是需要迭代的完善的。

敏捷开发,其实也是一个不断根据进行过程中的反馈 ,不断完善目标设定的一个过程,而且象Scrum本身也是有这样的说明的,但这种细节的看似不相关的部分,确被很多Scrum传教士们给忽略了,有一种情况是,这些传教士们不是技术出身,往往把这些边缘的看似一语带过的说明给当成可有可无的了,然后,对于这种精要的软件过程方法总结来说,前面的往往是一堆细节描述,而最后的一言两语才是重中之重,与我们中国人的表述方式确实有很大差异,我们中国人说话,养成的习惯是先做个大引子,阐明大思想,然后再逐一论证说明,或许最后还有一个补充;又或者中国人爱用序号来给一篇文章内容进行内容组织,而外国人(可能是英语语系的人吧,我也不太清楚)更爱用无序号的文章排序方式,无拘无束可能是他们的天性,而我们天朝之邦,规矩最为重要,所以做起事情来,都循规蹈矩的进行。

这一段有点不太小,确倒出一个敏捷开发的方法和思考问题的习惯,并不代表这样适合一切情况,我更喜欢做工作时,这样来做,做完工作,我更喜欢用中国式的总结方式来把这一工作涉及的知识再进一步加深、扩展研究一翻,形成一个立体的知识体系,放在我的脑子里,再尽可能与其它已知内容做以联系。

其实人之所以爱遗忘,不是你的磁盘里没有这份记录了,而是你的索引方式太单一,当这一索引在被损坏或其它数据误占后,你就再也找不到这份数据了;试想,你总会在过了很久之后,突然想起了很早以前曾想找到的一份数据,那是因为你碰巧读取到了你头脑中的这块磁盘空间,再激发出来的。

可能,人的思维是索引的存储位置,潜意识是索引指向的内容存储区,也许吧,瞎猜猜,不过合情不一定合理。

接下来的界面部分,就按上面的说法,先不研究,研扔下来,只占个位置

一、界面布局及效果

下午上班时间到了,先写到这里,有空儿继续完善......

时间: 2024-07-29 12:27:54

Android 使用 WebView 实现 Hybrid 的思路导引的相关文章

Android中WebView的一些简单用法_Android

Android中WebView的一些简单用法 一直想写一个关于 WebView 控件的 一些简单运用,都没什么时间,这次也是挤出时间写的,里面的一些基础知识就等有时间再更新讲解一下,今天就先把项目出来做一些简单介绍,过多的内容可以看我的源码,都传到github上了. 下面是项目的效果图: 应用用到的是 MVP 设计模式,对这种模式还不太了解的可以先自行google一下,不然项目估计会看的晕,虽然我的代码都很简洁的. 对于MVP 可以带着一个思路看源码,那就是 activity(或其他组件)通过

Android中WebView的一些简单用法

Android中WebView的一些简单用法 一直想写一个关于 WebView 控件的 一些简单运用,都没什么时间,这次也是挤出时间写的,里面的一些基础知识就等有时间再更新讲解一下,今天就先把项目出来做一些简单介绍,过多的内容可以看我的源码,都传到github上了. 下面是项目的效果图: 应用用到的是 MVP 设计模式,对这种模式还不太了解的可以先自行google一下,不然项目估计会看的晕,虽然我的代码都很简洁的. 对于MVP 可以带着一个思路看源码,那就是 activity(或其他组件)通过

Android 实现WebView点击图片查看大图列表及图片保存功能

在日常开发过程中,有时候会遇到需要在app中嵌入网页,此时使用WebView实现效果,但在默认情况下是无法点击图片查看大图的,更无法保存图片.本文将就这一系列问题的实现进行说明. 图示: 项目的知识点: 加载网页后如何捕捉网页中的图片点击事件: 获取点击的图片资源后进行图片显示,获取整个页面所有的图片: 支持查看上下一张的图片以及对图片缩放显示: 对图片进行保存: 其他:图片缓存的处理(不用每次都重新加载已查看过的图片) 项目代码结构: 前期准备(添加权限.依赖和混淆设置): 添加权限: <us

android 中 webview 怎么用 localStorage

  这篇文章主要介绍了android 中 webview 怎么用 localStorage方法的相关资料,需要的朋友可以参考下 我在 android里面 使用html5的 localStorage 为什么存不进去也读不出来呀? 网上搜了好多都没效果 ?mainWebView = (WebView)this.findViewById(R.id.mainWebView); WebSettings settings = mainWebView.getSettings(); settings.setJa

JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法

         JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法          这篇文章主要介绍了JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法,因转换的字符串数字都以0开头,导致parseInt函数在浏览器和Android WebView中转换结果不一样,本文给出了解决方法,需要的朋友可以参考下 今天被一个问题困扰,有一个页面在浏览器(无论是手机还是PC)上运行良好,而通过WebView就出

webview flash-求教大神:Android用webView显示flash文件是否可以快进,暂停?

问题描述 求教大神:Android用webView显示flash文件是否可以快进,暂停? 公司项目,需要显示flash,我用webView,但是可以实现一般播放器的功能吗:如:快进,快退,调节声音,下一曲等等. 问一下各位,播放flash还有其他的方案吗?项目组要对UI做大幅度定制 解决方案 用webView方案完全可行~

Android使用WebView加载HTML数据交互问题

问题描述 Android使用WebView加载HTML数据交互问题 Android开发在使用WebView加载HTML界面时,如何在Android的JAVA类中获取HTML界面的数据?求大神指教,有代码最好 解决方案 andorid和js交互最流行的方式就是用JSBridge,可以上github看看,这个不是简单的一两句代码就能搞定的,需要一个很好的框架支撑. 解决方案二: android中动态加载webview,webview加载html数据,并且隐藏滚动条android 使用webview加

Android中WebView载入本地HTML代码并实现Java与JavaScript交互的例子

正在开发一个地图程序, 相对于用XML写安卓界面, 我更愿意用这个偷懒的办法,就是不用Android自带的MapView, 而是使用之前就已经比较熟悉的Google Maps JavaScript API, 在Android的WebView中载入HTML代码, 利用Android提供的强大的Java与Js的交互功能,用网页作为界面来开发程序,同时也可以用Js回调机器的本地功能比如GPS等. 下面提供一个演示的例子,代码如下: 1package com.aloong.map; 2 3import 

android 使用webview加载服务器上的html页面只能显示文字无法显示图片

问题描述 android 使用webview加载服务器上的html页面只能显示文字无法显示图片 android 使用webview加载服务器上的html页面时,在低版本上的系统上没有问题,但在高版本(4.4以上)系统上只能显示文字,无法显示图片: 跪求大神帮助. 解决方案 webView.getSettings().setBlockNetworkImage(false); 解决方案二: show = (WebView) findViewById(R.id.show_info); WebSetti