• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android与H5互调(通过实例来了解Hybrid App),androidhybrid

Android与H5互调(通过实例来了解Hybrid App),androidhybrid

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android hybrid,android hybrid app,android hybrid开发,hybrid h5,hybrid child等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android与H5互调(通过实例来了解Hybrid App),androidhybrid


  前些日子,Android原生开发将被取缔的吵得火热,JavaScript是能做一个完全的APP,但只使用JavaScript做出来的APP也不会牛逼到哪里去。最好的是混合(Hybrid)开发,在需要的时候使用JavaScript,各有好处。

 

  Hybrid App中原生页面 VS H5页面:http://www.jianshu.com/p/00ff5664e000

  原生页面和H5页面的优劣势分析:

 

原生页面

优势:

(1)运行速度比较快

(2)能使用设备的底层功能,如摄像头、方向传感器、重力传感器、拨号、GPS、语音、短信、蓝牙等

(3)在界面设计、功能模块、操作逻辑等层面相较web更易做到App的便捷性和舒适性,功能更加强大

(4)节省流量

劣势:

(1)不同的操作系统(如Android和iOS)需要独立的进行开发,使用其各自的开发包、开发工具和控件

(2)每次有更新,都需要重新打包一次发布到应用平台上,且每次要向各个应用商店进行提交审核。之后用户需要手动进行点击更新安装(安装成本较高)

(3)开发成本比较高,尤其需要适配各种机型时(如Android应用,需要适配各种Android手机)

 

H5页面

优势:

(1)由于是运行在浏览器上,所以只需要开发一次便可以在不同的操作系统上显示

(2)迭代版本时,不需要打包便可以发布(实时更新、快速迭代),与云端实现实时数据交互

(3)开发成本相对较低,对浏览器的适配较简单,且发布门槛相对较低

劣势:

(1)每次打开页面,都得重新加载,获取数据...

(2)过于依赖网络,速度无法保证。特别在弱网环境下,不仅耗费流量而且加载缓慢,就算是WiFi情况下也不容乐观

(3)只能使用有限的设备底层功能(无法使用摄像头、方向传感器、重力传感器、拨号、GPS、语音、短信、蓝牙等功能)

(4)仍处于发展阶段,部分功能无法在基于现有技术的浏览器基础上实现,且无法全面的显示最完美的用户体验,只能用现有技术去弥去找最佳解决方案

 

  分析淘宝中的原生页面和H5页面

 

----------------------------------------------------------------------------------------------------------------------------

 ---------------------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------------

 ---------------------------------------------------------------------------------------------------------------------------

 

 

 

由上图得知,是否有底部tab导航栏也无法区别出H5页面

 

----------------------------------------------------------------------------------------------------------------------------

 ---------------------------------------------------------------------------------------------------------------------------

如下图是一个原生与webview混排的界面,红色线框是各控件的绘制边界,中间那一大块布局丰富的界面没有显示出很多边界红色,就是H5实现的。

 

 

  案例:

JS调用Java,将Java中的Json数据显示在H5界面,点击调起视频播放器

  效果图: 

 

  初始化webView: webview = (WebView) findViewById(R.id.webview);

  设置WebSettings:

 1        //设置支持javaScript
 2         webSettings = webview.getSettings();
 3         //设置支持javaScript
 4         webSettings.setJavaScriptEnabled(true);
 5         //设置文字大小
 6         webSettings.setTextZoom(100);
 7         //不让从当前网页跳转到系统的浏览器中
 8         webview.setWebViewClient(new WebViewClient() {
 9             //当加载页面完成的时候回调
10             @Override
11             public void onPageFinished(WebView view, String url) {
12                 super.onPageFinished(view, url);
13             }
14         });

 

1      //添加javaScript接口
2      webview.addJavascriptInterface(new MyJavascriptInterface(), "Android");
3      // body onload="javascript:Android.showcontacts()"与内部类中的方法相同
// "Android"必须与HTMl中的body onload="javascript:Android.showcontacts()"相同
4 //可以加载网络的页面,也可以加载应用内置的页面 5 webview.loadUrl("http://192.168.191.1:8080/JsCallJava.html");

 

 

 

 

javaScript接口的内部类设置如下:

 1 class MyJavascriptInterface {
 2         //调起Vedio
 3         @JavascriptInterface //android4.4以后浏览器内核改变了,但webView是使用原来的内核
 4         public void call(String video) {
 5             Intent intent = new Intent();//隐式意图
 6             intent.setDataAndType(Uri.parse(video),"video/*");
 7             startActivity(intent);
 8         }
 9 
10         //加载Vedio信息
11         @JavascriptInterface
12         public void showcontacts(){
13             String json = "[{\"name\":\"LikeYou\",\"video\":\"http://192.168.191.1:8080/LikeYou.mp4\"}]";
14             // 调用JS中的方法
15             webview.loadUrl("javascript:show("+"'"+json+"'"+")");
16         }
17     }

 

  
  源码及资源地下载 : http://www.cnblogs.com/wujiancheng/

(若没有效果,请将build.gradle 中的targetSdkVersion改为低于19) 因为android4.4以后浏览器内核改了,而webView还是使用原来的webkit内核

 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android与H5互调(通过实例来了解Hybrid App),androidhybrid

相关文章

  • 2017-05-26《第一行代码》目录
  • 2017-05-26ListView的CheckBox实现全部选中/不选中,listviewcheckbox
  • 2017-05-26Android之ViewPager 第二课,androidviewpager
  • 2017-05-26Android数据存储方式--SharedPreferences,sharedpreferences
  • 2017-05-26[转载] 从Handler.post(Runnable r) ,Handler.sendEmptyMessage()梳理Android的消息机制(以及handler的内存泄露),
  • 2017-05-26玩转Android---事件监听篇---第2篇,android---第2篇
  • 2017-05-26回顾自定义view三个构造函数,回顾view构造函数
  • 2017-05-26android沉浸式状态栏、变色状态栏、透明状态栏、修改状态栏颜色及透明
  • 2017-05-26RadioButton与CheckBox,radiobutton
  • 2017-05-26android Notification介绍,androidnotification

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android深入四大组件(四)广播的注册、发送和接收过程
    • 接入微信分享过程的喜和泪
    • 关于如何在安卓的百度地图开发里面简单实现持续定位,安卓地图
    • Android系统 应用图标显示未读消息数(BadgeNumber) 桌面app图标的角标显示
    • Linux主机网络流量监控ifstat
    • RK3288开发过程中遇到的问题点和解决方法之Framework,rk3288framework
    • 【Android基础】Activity启动模式以及Intent Flags 与 栈 的全面解析
    • 我的android学习经历12,android学习经历12
    • Android Studio第一次提交git使用,androidgit
    • AsyncTask注意事项,面试技巧和注意事项

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有