- 浏览: 153372 次
- 性别:
- 来自: 深圳
最新评论
-
dawei1980:
请问,解压密码是多少?
Android本地APP集成Mui框架 -
牧羊之人:
Android本地APP集成Mui框架 -
还有也许:
貌似懂了一点。如果onCreate方法中创建了一个db,然后在 ...
Android线程模式(handler,thread,looper) -
chenshijun0101:
header里面怎么更改他的样式呢?急求
android Preference相关样式修改 -
qlraishui:
good
Binder机制分析【三】-service绑定Binder
2.如何在安卓原生APP中使用MUI框架
2.1资源准备
1.需要去首先从官网http://www.dcloud.io/ 下载HBuilder及其他的开发工具(eclipse或者Android studio)
2.到http://ask.dcloud.net.cn/article/103 下载HBuilder离线打包Android版SDK
2.2项目集成
1. 用Android Studio创建一个新项目,如MyFirstMUI
2. 导入jar包,可从HBuilder-Integrate工程的libs中选择,具体要导入哪些jar包可从SDK中的Feature-Android.xls中查看。
3.加入app资源
①在工程目录下的创建assets文件夹,并在assets目录下添加apps目录
②在apps目录下创建应用ID同名目录
③在应用ID同名目录下创建www目录
④将应用资源和应用配置文件(manifest.json)拷贝到www目录下
其中“H5B1EA68D”目录名称为应用manifest.json中的id名称,务必一致。
如下图:
4.添加配置文件
添加control.xml文件和properties.xml文件到assets->data目录下,其中control.xml文件的appid值为HBuilder应用的appid,必须与应用manifest.json中的id值完全一致;appver为应用的版本号,用于应用资源的升级,必须保持与manifest.json中的version -> name值完全一致;version值为应用基座版本号(plus.runtime.innerVersion返回的值),不要随意修改。
Properites文件用于对应JS类名和Android包名的对应关系,用户可以根据开发项目使用到的插件对文件进行添加或删改。
这两个文件都可从HBuilder-Integrate工程中拷贝过来进行修改。如下图:
5.复制所需的资源文件到drawable和layout文件夹中
如下图:
6、修改AndroidManifest.xml文件
文件中的versionCode与manifest.json中version -> code值一致;versionName与manifest.json中version -> name值一致。根据HBuilder-Integrate工程中的AndroidManifest.xml文件添加所的功能权限。
7. 添加代码编译测试
如下图:
注意RInfomation要连同其目录一起复制进项目中。
2.3参考资料
http://www.mamicode.com/info-detail-1149716.html
http://ask.dcloud.net.cn/docs/
3.本地app如何与H5+交互
1.JS扩展方法的实现
document.addEventListener("plusready", function() {
var _BARCODE = 'plugintest', B = window.plus.bridge;
var plugintest = {
PluginTestFunction : function(Argus1, Argus2, Argus3, Argus4,
successCallback, errorCallback) {
var success = typeof successCallback !== 'function' ? null
: function(args) {
successCallback(args);
}, fail = typeof errorCallback !== 'function' ? null
: function(code) {
errorCallback(code);
};
callbackID = B.callbackId(success, fail);
return B.exec(_BARCODE, "PluginTestFunction", [ callbackID, Argus1,
Argus2, Argus3, Argus4 ]);
},
PluginTestFunctionArrayArgu : function(Argus, successCallback,
errorCallback) {
var success = typeof successCallback !== 'function' ? null
: function(args) {
successCallback(args);
}, fail = typeof errorCallback !== 'function' ? null
: function(code) {
errorCallback(code);
};
callbackID = B.callbackId(success, fail);
return B.exec(_BARCODE, "PluginTestFunctionArrayArgu", [
callbackID, Argus ]);
},
PluginTestFunctionSync : function(Argus1, Argus2, Argus3, Argus4) {
return B.execSync(_BARCODE, "PluginTestFunctionSync", [ Argus1,
Argus2, Argus3, Argus4 ]);
},
PluginTestFunctionSyncArrayArgu : function(Argus) {
return B.execSync(_BARCODE, "PluginTestFunctionSyncArrayArgu",
[ Argus ]);
}
};
window.plus.plugintest = plugintest;
}, true);
2.Html使用示例 plus.plugintest.PluginTestFunctionArrayArgu(["Html5","Plus","AsyncFunction","ArrayArgument!"], function(result) {alert( result );},function(result){alert(result)});
plus.plugintest.PluginTestFunction("Html5","Plus","AsyncFunction","MultiArgument!", function( result ) {alert( result[0] + "_" + result[1] + "_" + result[2] + "_" + result[3] );},function(result){alert(result)});
var Argus = plus.plugintest.PluginTestFunctionSyncArrayArgu(["Html5","Plus","SyncFunction","ArrayArgument!"]);
var resulrt = plus.plugintest.PluginTestFunctionSync("Html5","Plus","SyncFunction","MultiArgument!");
3. Android第三方插件开发
创建插件类
创建一个继承自StandardFeature的类,实现第三方插件扩展。
创建插件类需要引入的包
import io.dcloud.DHInterface.IWebview;
import io.dcloud.DHInterface.StandardFeature;
import io.dcloud.util.JSUtil;
实现扩展方法
package com.example.test;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import io.dcloud.common.DHInterface.IWebview;
import io.dcloud.common.DHInterface.StandardFeature;
import io.dcloud.common.util.JSUtil;
public class TestUtil extends StandardFeature {
public void PluginTestFunction(IWebview pWebview, JSONArray array) {
String CallBackID = array.optString(0);
JSONArray newArray = new JSONArray();
newArray.put(array.optString(1));
newArray.put(array.optString(2));
newArray.put(array.optString(3));
newArray.put(array.optString(4));
JSUtil.execCallback(pWebview, CallBackID, newArray, JSUtil.OK, false);
}
public void PluginTestFunctionArrayArgu(IWebview pWebview, JSONArray array) {
String ReturnString = null;
String CallBackID = array.optString(0);
JSONArray newArray = null;
try {
newArray = new JSONArray(array.optString(1));
String inValue1 = newArray.getString(0);
String inValue2 = newArray.getString(1);
String inValue3 = newArray.getString(2);
String inValue4 = newArray.getString(3);
ReturnString = inValue1 + "-" + inValue2 + "-" + inValue3 + "-" + inValue4;
} catch (JSONException e) {
e.printStackTrace();
}
JSUtil.execCallback(pWebview, CallBackID, ReturnString, JSUtil.OK, false);
}
public String PluginTestFunctionSyncArrayArgu(IWebview pWebview, JSONArray array) {
JSONArray newArray = null;
JSONObject retJSONObj = null;
try {
newArray = array.optJSONArray(0);
String inValue1 = newArray.getString(0);
String inValue2 = newArray.getString(1);
String inValue3 = newArray.getString(2);
String inValue4 = newArray.getString(3);
retJSONObj = new JSONObject();
retJSONObj.putOpt("RetArgu1", inValue1);
retJSONObj.putOpt("RetArgu2", inValue2);
retJSONObj.putOpt("RetArgu3", inValue3);
retJSONObj.putOpt("RetArgu4", inValue4);
} catch (JSONException e1) {
e1.printStackTrace();
}
return JSUtil.wrapJsVar(retJSONObj);
}
public String PluginTestFunctionSync(IWebview pWebview, JSONArray array) {
String inValue1 = array.optString(0);
String inValue2 = array.optString(1);
String inValue3 = array.optString(2);
String inValue4 = array.optString(3);
String ReturnValue = inValue1 + "-" + inValue2 + "-" + inValue3 + "-" + inValue4;
return JSUtil.wrapJsVar(ReturnValue, true);
}
}
4.关联JS插件名和原生类
在编写扩展插件时需要修改“/assets/data”中properties.xml文件,在其中添加JS对象名称和Android包的类名对应关系,SDK会根据对应的类名查找并生成相应的对象并执行对应的逻辑。
<feature
name="plugintest" value="com.example.test.TestUtil">
</feature>
在应用的manifest.json文件中还需要添加扩展插件的应用使用权限
"plugintest": {
"description": "访问本地SDK"
},
5.参考资料
http://ask.dcloud.net.cn/article/66
2.1资源准备
1.需要去首先从官网http://www.dcloud.io/ 下载HBuilder及其他的开发工具(eclipse或者Android studio)
2.到http://ask.dcloud.net.cn/article/103 下载HBuilder离线打包Android版SDK
2.2项目集成
1. 用Android Studio创建一个新项目,如MyFirstMUI
2. 导入jar包,可从HBuilder-Integrate工程的libs中选择,具体要导入哪些jar包可从SDK中的Feature-Android.xls中查看。
3.加入app资源
①在工程目录下的创建assets文件夹,并在assets目录下添加apps目录
②在apps目录下创建应用ID同名目录
③在应用ID同名目录下创建www目录
④将应用资源和应用配置文件(manifest.json)拷贝到www目录下
其中“H5B1EA68D”目录名称为应用manifest.json中的id名称,务必一致。
如下图:
4.添加配置文件
添加control.xml文件和properties.xml文件到assets->data目录下,其中control.xml文件的appid值为HBuilder应用的appid,必须与应用manifest.json中的id值完全一致;appver为应用的版本号,用于应用资源的升级,必须保持与manifest.json中的version -> name值完全一致;version值为应用基座版本号(plus.runtime.innerVersion返回的值),不要随意修改。
Properites文件用于对应JS类名和Android包名的对应关系,用户可以根据开发项目使用到的插件对文件进行添加或删改。
这两个文件都可从HBuilder-Integrate工程中拷贝过来进行修改。如下图:
5.复制所需的资源文件到drawable和layout文件夹中
如下图:
6、修改AndroidManifest.xml文件
文件中的versionCode与manifest.json中version -> code值一致;versionName与manifest.json中version -> name值一致。根据HBuilder-Integrate工程中的AndroidManifest.xml文件添加所的功能权限。
7. 添加代码编译测试
如下图:
注意RInfomation要连同其目录一起复制进项目中。
2.3参考资料
http://www.mamicode.com/info-detail-1149716.html
http://ask.dcloud.net.cn/docs/
3.本地app如何与H5+交互
1.JS扩展方法的实现
document.addEventListener("plusready", function() {
var _BARCODE = 'plugintest', B = window.plus.bridge;
var plugintest = {
PluginTestFunction : function(Argus1, Argus2, Argus3, Argus4,
successCallback, errorCallback) {
var success = typeof successCallback !== 'function' ? null
: function(args) {
successCallback(args);
}, fail = typeof errorCallback !== 'function' ? null
: function(code) {
errorCallback(code);
};
callbackID = B.callbackId(success, fail);
return B.exec(_BARCODE, "PluginTestFunction", [ callbackID, Argus1,
Argus2, Argus3, Argus4 ]);
},
PluginTestFunctionArrayArgu : function(Argus, successCallback,
errorCallback) {
var success = typeof successCallback !== 'function' ? null
: function(args) {
successCallback(args);
}, fail = typeof errorCallback !== 'function' ? null
: function(code) {
errorCallback(code);
};
callbackID = B.callbackId(success, fail);
return B.exec(_BARCODE, "PluginTestFunctionArrayArgu", [
callbackID, Argus ]);
},
PluginTestFunctionSync : function(Argus1, Argus2, Argus3, Argus4) {
return B.execSync(_BARCODE, "PluginTestFunctionSync", [ Argus1,
Argus2, Argus3, Argus4 ]);
},
PluginTestFunctionSyncArrayArgu : function(Argus) {
return B.execSync(_BARCODE, "PluginTestFunctionSyncArrayArgu",
[ Argus ]);
}
};
window.plus.plugintest = plugintest;
}, true);
2.Html使用示例 plus.plugintest.PluginTestFunctionArrayArgu(["Html5","Plus","AsyncFunction","ArrayArgument!"], function(result) {alert( result );},function(result){alert(result)});
plus.plugintest.PluginTestFunction("Html5","Plus","AsyncFunction","MultiArgument!", function( result ) {alert( result[0] + "_" + result[1] + "_" + result[2] + "_" + result[3] );},function(result){alert(result)});
var Argus = plus.plugintest.PluginTestFunctionSyncArrayArgu(["Html5","Plus","SyncFunction","ArrayArgument!"]);
var resulrt = plus.plugintest.PluginTestFunctionSync("Html5","Plus","SyncFunction","MultiArgument!");
3. Android第三方插件开发
创建插件类
创建一个继承自StandardFeature的类,实现第三方插件扩展。
创建插件类需要引入的包
import io.dcloud.DHInterface.IWebview;
import io.dcloud.DHInterface.StandardFeature;
import io.dcloud.util.JSUtil;
实现扩展方法
package com.example.test;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import io.dcloud.common.DHInterface.IWebview;
import io.dcloud.common.DHInterface.StandardFeature;
import io.dcloud.common.util.JSUtil;
public class TestUtil extends StandardFeature {
public void PluginTestFunction(IWebview pWebview, JSONArray array) {
String CallBackID = array.optString(0);
JSONArray newArray = new JSONArray();
newArray.put(array.optString(1));
newArray.put(array.optString(2));
newArray.put(array.optString(3));
newArray.put(array.optString(4));
JSUtil.execCallback(pWebview, CallBackID, newArray, JSUtil.OK, false);
}
public void PluginTestFunctionArrayArgu(IWebview pWebview, JSONArray array) {
String ReturnString = null;
String CallBackID = array.optString(0);
JSONArray newArray = null;
try {
newArray = new JSONArray(array.optString(1));
String inValue1 = newArray.getString(0);
String inValue2 = newArray.getString(1);
String inValue3 = newArray.getString(2);
String inValue4 = newArray.getString(3);
ReturnString = inValue1 + "-" + inValue2 + "-" + inValue3 + "-" + inValue4;
} catch (JSONException e) {
e.printStackTrace();
}
JSUtil.execCallback(pWebview, CallBackID, ReturnString, JSUtil.OK, false);
}
public String PluginTestFunctionSyncArrayArgu(IWebview pWebview, JSONArray array) {
JSONArray newArray = null;
JSONObject retJSONObj = null;
try {
newArray = array.optJSONArray(0);
String inValue1 = newArray.getString(0);
String inValue2 = newArray.getString(1);
String inValue3 = newArray.getString(2);
String inValue4 = newArray.getString(3);
retJSONObj = new JSONObject();
retJSONObj.putOpt("RetArgu1", inValue1);
retJSONObj.putOpt("RetArgu2", inValue2);
retJSONObj.putOpt("RetArgu3", inValue3);
retJSONObj.putOpt("RetArgu4", inValue4);
} catch (JSONException e1) {
e1.printStackTrace();
}
return JSUtil.wrapJsVar(retJSONObj);
}
public String PluginTestFunctionSync(IWebview pWebview, JSONArray array) {
String inValue1 = array.optString(0);
String inValue2 = array.optString(1);
String inValue3 = array.optString(2);
String inValue4 = array.optString(3);
String ReturnValue = inValue1 + "-" + inValue2 + "-" + inValue3 + "-" + inValue4;
return JSUtil.wrapJsVar(ReturnValue, true);
}
}
4.关联JS插件名和原生类
在编写扩展插件时需要修改“/assets/data”中properties.xml文件,在其中添加JS对象名称和Android包的类名对应关系,SDK会根据对应的类名查找并生成相应的对象并执行对应的逻辑。
<feature
name="plugintest" value="com.example.test.TestUtil">
</feature>
在应用的manifest.json文件中还需要添加扩展插件的应用使用权限
"plugintest": {
"description": "访问本地SDK"
},
5.参考资料
http://ask.dcloud.net.cn/article/66
- 5_集成文档.rar (74.9 KB)
- 下载次数: 16
- demo.rar (7.1 MB)
- 下载次数: 26
发表评论
-
判断图片是浅色还是深色
2020-03-04 13:23 710首先需要获取 WallpaperManager.FLAG_L ... -
如何将uri转成真实路径地址
2018-10-15 17:38 1122/** * 获取文件选择器选中的文 ... -
备用网址记录
2018-01-08 11:05 397各种开源下载 http://www.mvnjar.com/ ... -
android中touch事件,click事件,longclick事件分析
2016-08-03 15:51 1431针对屏幕上的一个View控件,Android如何区分应当触发o ... -
Android 快速开发系列 打造万能的ListView GridView 适配器
2016-06-27 17:21 633前往 http://blog.csdn.net/lmj6235 ... -
android中的Handler和AsyncTask如何防止内存泄露
2016-06-13 13:55 1583Handler泄露的关键点有两个: 1). 内部类 ... -
[转载]SharedPreferences 存储java对象,很实用
2016-04-14 16:36 1011public void putObject(String ke ... -
Android与设计模式浅谈
2015-04-27 10:42 1013Android作为新一代的操作系统,集合着Google ... -
从网页启动Activity
2015-03-24 11:28 1308正好Android SDK 给我们提供了解决方案,在网页中点击 ... -
[转]android shape的使用
2014-10-13 13:30 720shape用于设定形状,可以在selector,layout等 ... -
touch事件分发处理流程
2014-05-23 09:44 790Touch 事件发生时 Activity 的 dispatch ... -
修改标准GSensor相关,是重力感应游戏在平板都可以玩
2013-12-21 11:27 807为什么有些重力感应的游戏不能玩,有些可以玩,主要原因在于fra ... -
Android模拟按键
2013-10-14 14:27 2352如果想要实现类似iphone的悬浮框按钮,那就必须知道如何去模 ... -
android资源适配解析及资源适配优先级规则
2013-10-12 12:41 36361.sw的值是怎么计算得来 ... -
[转]隐藏虚拟按键(导航栏)的方法
2013-10-12 10:35 2853Controls for system UI visibili ... -
【转】解决Android与服务器交互大容量数据问题
2013-09-02 14:40 2001对于目前的状况来说, ... -
[转载]Android大图裁剪解决办法
2013-04-25 14:29 2052cropimage 可以调用手机自带的com.android ... -
反锯齿办法
2012-12-28 14:14 912在Android中,目前,我知道有两种出现锯齿的情况。 ① ... -
android线程的那些事
2012-11-17 15:36 2255有些时候Thread里面更新UI是可以成功的。 比如在Acti ... -
图像缩放和旋转
2012-11-16 11:20 1162在绘制bitmap时,都会涉及一个参数矩阵Matrix,Mat ...
相关推荐
性能和体验的差距,一直是mobile app开发者放弃HTML5的首要原因。 浏览器天生的切页白屏、不忍直视的转页...mui框架有效的解决了这些问题,这是一个可以方便开发出高性能App的框架,也是目前最接近原生App效果的框架。
MUI手机app前端页面开发框架模板下载 MUI手机app前端页面开发框架模板下载
性能和体验的差距,一直是mobile app开发者放弃HTML5的首要原因。 浏览器天生的切页白屏、不忍直视的转页...mui框架有效的解决了这些问题,这是一个可以方便开发出高性能App的框架,也是目前最接近原生App效果的框架。
MUIDemos, MUI框架集成、DemoApp、代码示例
影视APP源码,mui框架的。hbuilderx或hbuilder打包即可,只包含前端web app源码文件。基本功能都齐全,有需要的可以拿去。卖好几百的东西。聚合影视源码 Movie and TV APP source code, Mui framework. Hbuilderx or...
影视APP源码,mui框架的。hbuilderx或hbuilder打包即可,只包含前端web app源码文件。
性能和体验的差距,一直是mobile app开发者放弃HTML5的首要原因。 浏览器天生的切页白屏、不忍直视的转页...mui框架有效的解决了这些问题,这是一个可以方便开发出高性能App的框架,也是目前最接近原生App效果的框架。
html+app、mui+app等html移动端开发、计算当前APP缓存的数据大小和清除当前APP缓存等常用函数,为了解决html移动端开发因图片缓存或数据缓存到最后内存过大后导致app程序卡顿。
小米MUI前端框架,包括html5和Android源代码,其h5文件位于assert目录下。MUI官方提供的的Github上的源代码,没有Android的,所以哥分享了这份代码,html不完整,是因为MUI官方提供的h5源码不完整。
体温上报APP,由服务端代码 和 MUI框架编写的手机APP代码组成 功能包括:登陆、注册、体温上报、个人体温信息列表展示、个人体温信息折线图、个人信息的展示和编辑(头像上传) 运行环境 服务端:PHP + PHPStudy ...
可在微信小程序中直接使用的mui框架,简单易懂,值得推荐
HTML5开发APP-框架MUI(仿支付宝案例)HTML5开发APP-框架MUI(仿支付宝案例)
基于mui框架制作移动端选项卡切换,触屏滑动下拉加载数据列表刷新代码。
利用pdf.js插件解析文件,mui.previewimage.js和mui.zoom.js实现查看和缩放。在混合APP开发过程中使用
弹出层MUI框架美化.rar
MUI: 最接近原生APP体验的高性能前端框架... mui框架内置了图片轮播插件,通过该插件封装的JS
MUI移动开发框架
MUI是一套前端框架,由DCLOUD公司研发而成,提供大量H5和js语言组成的组件,大大提高了开发效率,可以用于开发web端应用、web app等应用。
mui简单框架下载