b+c 模式 H5 与 Android 混合 开发详解
来源:互联网 发布:成都犀牛软件培训 编辑:程序博客网 时间:2024/04/30 13:23
h5 ios android 简介: 概念: 加载网址 加载网页 加载网页字符串 点击内容的时候 会调到浏览器 我们可以让其在当前页展示:h5 可以利用WebView,做一款app,混合开发,如果只是展示数据的话,只仅仅给你一个网址,就可以去访问了。 h5 : 优点 变化比较快,界面都放在服务器上了,服务器的网页一遍,界面全都变了。 h5 做布局变化很简单,服务端一改变,手机上全就变了,布局,快,变化快 缺点: 下载数据的时候,除了真实想展示给用户的以外,还下载了样式,宽,色,点击色 未点击色,滑动操作,都是网页下载下来的,下载数据量大,同样内容,下载的数据量要在原生的4-5倍。h5 页面加载速度慢 若: 你将H5 打在apk 里,速度要快 缺点不灵活了 变化小了 优点: 在android ios iba 文件 都可以用,写一个页面相当于写了两个页面 android webView 加载它即可,ios 相应控件加载 windosphone 使用极少 h5 也可展示同样效果 架一个壳子 h5 优点 跟java 差不多 一次编译 倒出运行 电商类的h5 做的 比原生好 缺点 : h5 做传输 加密很难,本身就是字符串形式 传递到本地的 无法做安全性比较高的,h5 再发展的,对 android 比对 ios 冲击大 应用类市场 被h5 冲击 andorid 嵌入式,智能家居,物联网,android 比ios 优势,可以在任何地方编译 运行 缺点 : 原来 c比java 快20 倍,h5 运行很慢 h5 渲染一个页面 和 原生布局 渲染一个界面 10倍左右时间, java 抢了 很多 c 语言的工作 服务器 嵌入式 很多东西 无法比较 c 无法做硬件的访问 c 可以直接访问 硬件 ,java 则写不了驱动 编程语言排名 java c c++ Ios 硬件软件 兼容性高 原生应用 : 访问网页的时候布局是 变不了的 只能是数据发生变化的。
b+c 模式使用 :
在原生 app 中嵌入,html5 :xml布局文件中,引入webView控件:activity 中 loadUrl 即可
## 使用:怎么用 LSO ## //webView 控件获取 设置ulr 设置在客户端显示,还是浏览器显示 assert webView!=null; webView.loadUrl("http://www.baidu.com"); //设置 界面在当前窗口跳转不打开网页 webView.setWebViewClient(new WebViewClient()); // 让 webView 可以后退 @Override public void onBackPressed() { if (webView.canGoBack()) { //webView Can go back webView.goBack(); } // if isn't can call father method super.onBackPressed(); }
点击html 按钮,调用 android 代码:
在html 代码中我们可以调用 js, 利用webView 我们也可,加载html 界面,也可以,在html onClick 事件 中触发app 的代码,下面以吐司为例,
① 在main目录下,新建assets 文件夹,里边放个 html 文件
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script> function jstest(){ document.getElementById("btn").textContent = "hhhhh" } </script></head><body> <button id="btn" onclick="obj.test('来自于HTML 5')">点我</button></body></html>
② MainActivity 目录下先建一个 类 JsInterface
package com.example.liyang.webviewforcsdn;import android.content.Context;import android.webkit.JavascriptInterface;import android.widget.Toast;public class JsInterface { private Context context; public JsInterface(Context context) { this.context = context; } @JavascriptInterface public void test(String text){//方法名test与 html中方法名一致 Toast.makeText(context, "html调用java后台代码"+text, Toast.LENGTH_SHORT).show(); }}
MainActivity 中代码:
package com.example.liyang.webviewforcsdn;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.webkit.WebView;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;public class MainActivity extends AppCompatActivity { private WebView web_id; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); assert web_id!=null; web_id = (WebView) findViewById(R.id.web_id); // load Html code loadHtml(); } /** * loadHtml to app */ private void loadHtml() { InputStream html =null; ByteArrayOutputStream bos = null; try { html = getAssets().open("test.html"); bos = new ByteArrayOutputStream(); byte[] byff = new byte[1<<10]; int len; while((len=html.read(byff))!=-1){ bos.write(byff,0,len); } String str = bos.toString(); web_id.loadData(str,"text/html;charset=utf-8","utf-8"); //start js web_id.getSettings().setJavaScriptEnabled(true); // join native interface web_id.addJavascriptInterface(new JsInterface(this),"obj"); } catch (IOException e) { e.printStackTrace(); }finally { if (html!=null){ try { html.close(); } catch (IOException e) { e.printStackTrace(); } }if (bos!=null){ try { bos.close(); } catch (IOException e) { e.printStackTrace(); } } } }}
在 android 点击按钮 调用js 代码,执行 js 事件
下边为按钮的监听事件
@Override public void onClick(View v) { int id = v.getId(); switch (id){ case R.id.btn_id: // execute js code web_id.loadUrl("javascript:jstest()"); break; } } //override @Override public void onBackPressed() { if (web_id.canGoBack()) { web_id.goBack(); } else super.onBackPressed(); }
1 0
- b+c 模式 H5 与 Android 混合 开发详解
- Android与H5交互(混合开发)
- 混合开发 H5 与 ios、android 交互
- Android+H5混合开发
- AppInterface,一套Android与H5的混合开发框架
- android webview与H5混合开发,webview自定义缓存
- Android与H5混合开发中获取H5存储在localStorage中的数据信息
- Soap技术在Windows应用程序开发中的应用B/S与C/S混合模式开发[草稿]
- android h5混合开发(二)
- android native和h5混合开发demo
- h5混合APP开发
- H5混合开发
- app h5混合开发
- 电商类APP H5与iOS和android混合开发问题记录
- H5混合开发中debug模式的远程调试
- Ahdroid 混合开发 接入H5界面以及webView控件详解
- 【Android 进阶】原生Android结合H5混合开发小结
- 【Android 进阶】原生Android结合H5混合开发小结
- 第四周项目5:程序分析
- 人生第一次全马
- C语言中的特殊转义字符
- poj-2993-Emag eht htiw Em Pleh && poj-2996-Help Me with the Game
- Spring中的@Autowired依赖注入
- b+c 模式 H5 与 Android 混合 开发详解
- 构建高并发高可用的电商平台架构实践
- STL与泛型编程<十二>:Stream(流)迭代器
- 初学的c语言一些简单的练习题(自我练习)
- 写mapreduce时的注意点
- 相似度算法
- JSTL
- Thread详解6:synchronized的使用(二)
- 设计模式-策略模式