HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

Android 6的重大BUG何时解决?

mui

项目都快收尾发现有这么大一个坑,官方也不出来说句话。。。。
参见:http://ask.dcloud.net.cn/question/18495

项目都快收尾发现有这么大一个坑,官方也不出来说句话。。。。
参见:http://ask.dcloud.net.cn/question/18495

页面滚动

区域滚动

在外层嵌套

   <div class="mui-scroll-wrapper">  
       <div class="mui-scroll">  

       </div>  
   </div>

这样的HTML开启区域滚动的时候。当页面中有大块的独立区域的时候,这时滚动页面,当两根手指前后按在手机屏幕上的时候。页面会跳动到第二次按下得位置,
这样就造成了在双手一起在屏幕上滚动页面的时候,无法让页面向上或向下滚动,它总是在两根手指按下的地方,来回跳动。

继续阅读 »

在外层嵌套

   <div class="mui-scroll-wrapper">  
       <div class="mui-scroll">  

       </div>  
   </div>

这样的HTML开启区域滚动的时候。当页面中有大块的独立区域的时候,这时滚动页面,当两根手指前后按在手机屏幕上的时候。页面会跳动到第二次按下得位置,
这样就造成了在双手一起在屏幕上滚动页面的时候,无法让页面向上或向下滚动,它总是在两根手指按下的地方,来回跳动。

收起阅读 »

《mui 视频教程》已录制完毕欢迎大家一起学习

mui

《mui开发教程》全套录制工作已经完成,视频观看地址
http://www.hcoder.net/course/info_211.html
总计时长 4小时左右,分段讲解了 MUI的常用组件、事件、服务端通讯等知识。
后期将发布 h5+ 相关教程,欢迎观看,欢迎意见建议!

继续阅读 »

《mui开发教程》全套录制工作已经完成,视频观看地址
http://www.hcoder.net/course/info_211.html
总计时长 4小时左右,分段讲解了 MUI的常用组件、事件、服务端通讯等知识。
后期将发布 h5+ 相关教程,欢迎观看,欢迎意见建议!

收起阅读 »

关于plus.share的心得

Share

今天研究了一下分享插件,发现确实难用,反而不如直接使用网上的插件了。以下是我的一些心得。

1、首先如果需要分享一篇带图片的文章,我们有几种方式分享:
1)分享一张包含本地路劲的图片,也就是说手机中需要包含此图片的硬件地址,如果手机存储中没有这个图片的话,就完全无法分享。
2)分享一张牌照后的图片,和上面的方式一样,只不过需要先拍照保存到本地再分享。
3)分享一张app目录中已经存在的logo图,这个也是类似的。

4)唯一不同的方式是分享链接,但是手机端的页面肯定是无法以链接方式分享出去的。

  • 之前碰见问题,新浪微博报错10007,特纳疼讯QQ报错-100
  • 无法提交网络图片的原因可能是由于目前仅仅集成了低级接口,而没有使用高级接口,并且高级接口必须申请appkey并且配置之后才能使用。
  • 详见http://ask.dcloud.net.cn/question/1357,里面说的转换成base64二进制我还未尝试。
  • 现在就出现了一个问题,目前我们是通过接口从服务器获取数据然后显示在手机页面上,这种方式获取的图片是远程地址的,没有保存在手机上,自然无法发送了。

2、那如果需要分享带图片的文章我们应该怎么做。
1)通过完全的服务器页面方式:
需要有一台可以让外网访问到的服务器,上面部署了一个web应用来生成文章页面。这种情况下通过分享链接方式分享文章就可以了。
2)通过曲线救国方式:
将图片保存到本地再发送,但是这种方式会造成流量的浪费。

3、以上方式仅仅在测试调试时可行,很多功能无法使用,如果需要正常使用,我们必须申请微博、微信、朋友圈、腾讯微博、qq等服务的appkey并配置到app中。

继续阅读 »

今天研究了一下分享插件,发现确实难用,反而不如直接使用网上的插件了。以下是我的一些心得。

1、首先如果需要分享一篇带图片的文章,我们有几种方式分享:
1)分享一张包含本地路劲的图片,也就是说手机中需要包含此图片的硬件地址,如果手机存储中没有这个图片的话,就完全无法分享。
2)分享一张牌照后的图片,和上面的方式一样,只不过需要先拍照保存到本地再分享。
3)分享一张app目录中已经存在的logo图,这个也是类似的。

4)唯一不同的方式是分享链接,但是手机端的页面肯定是无法以链接方式分享出去的。

  • 之前碰见问题,新浪微博报错10007,特纳疼讯QQ报错-100
  • 无法提交网络图片的原因可能是由于目前仅仅集成了低级接口,而没有使用高级接口,并且高级接口必须申请appkey并且配置之后才能使用。
  • 详见http://ask.dcloud.net.cn/question/1357,里面说的转换成base64二进制我还未尝试。
  • 现在就出现了一个问题,目前我们是通过接口从服务器获取数据然后显示在手机页面上,这种方式获取的图片是远程地址的,没有保存在手机上,自然无法发送了。

2、那如果需要分享带图片的文章我们应该怎么做。
1)通过完全的服务器页面方式:
需要有一台可以让外网访问到的服务器,上面部署了一个web应用来生成文章页面。这种情况下通过分享链接方式分享文章就可以了。
2)通过曲线救国方式:
将图片保存到本地再发送,但是这种方式会造成流量的浪费。

3、以上方式仅仅在测试调试时可行,很多功能无法使用,如果需要正常使用,我们必须申请微博、微信、朋友圈、腾讯微博、qq等服务的appkey并配置到app中。

收起阅读 »

关于地理位置获取使用provider:baidu无法再次获取

现在有A\B两个页面,从A打开B页面,在B页面中获取地址位置并保存在页面中使用,使用的是privider:'baidu'
如果此时从B页面返回之后再打开,就无法获取地址位置信息了。
使用的是安卓手机。

由于项目中已经普遍使用了百度地图,此处就不更换位置格式了。

此处应为bug:
现在有两种解决方案
1、先调用非privider:'baidu'的参数的地址位置获取api,比如privider:'system',在成功的回调函数中直接调用带百度参数的api。
2、直接调用非百度参数的api之后使用百度的接口进行数值转换。转换成百度的位置格式。

继续阅读 »

现在有A\B两个页面,从A打开B页面,在B页面中获取地址位置并保存在页面中使用,使用的是privider:'baidu'
如果此时从B页面返回之后再打开,就无法获取地址位置信息了。
使用的是安卓手机。

由于项目中已经普遍使用了百度地图,此处就不更换位置格式了。

此处应为bug:
现在有两种解决方案
1、先调用非privider:'baidu'的参数的地址位置获取api,比如privider:'system',在成功的回调函数中直接调用带百度参数的api。
2、直接调用非百度参数的api之后使用百度的接口进行数值转换。转换成百度的位置格式。

收起阅读 »

mui h5+ 视频专区

mui

混合app开发课程包含html,css,html5,css3,js,ui,mui,h5+,csatapp.js,php,mysql,混合开发app技术
react native app开发课程,HTML5,CSS3,Javascript,ECMAscript6,React+React Native,php,mysql,React Native课程vip班
最后一天报名时间,今天报名vip课程优惠活动哦,加赠送课程 有意者加qq2971611409,tel:17090057793

继续阅读 »

混合app开发课程包含html,css,html5,css3,js,ui,mui,h5+,csatapp.js,php,mysql,混合开发app技术
react native app开发课程,HTML5,CSS3,Javascript,ECMAscript6,React+React Native,php,mysql,React Native课程vip班
最后一天报名时间,今天报名vip课程优惠活动哦,加赠送课程 有意者加qq2971611409,tel:17090057793

收起阅读 »

部分Android6手机报long-running timer并且卡顿的问题已经初步解决

long_running timer

升级到最新版hbuilder或下载最新的离线打包sdk。
目前的解决方案主要解决的是卡顿问题,控制台依然会输出long-running timer的信息,但不影响卡顿。
这个日志是由于定时监听touch造成的,具体参考https://segmentfault.com/a/1190000006053354

目前发现在同时加载的webview非常多的情况下,新版本也仍然存在卡顿。我们还在优化,开发者也注意减少并发创建和载入太多webview。

继续阅读 »

升级到最新版hbuilder或下载最新的离线打包sdk。
目前的解决方案主要解决的是卡顿问题,控制台依然会输出long-running timer的信息,但不影响卡顿。
这个日志是由于定时监听touch造成的,具体参考https://segmentfault.com/a/1190000006053354

目前发现在同时加载的webview非常多的情况下,新版本也仍然存在卡顿。我们还在优化,开发者也注意减少并发创建和载入太多webview。

收起阅读 »

mui h5+最佳课程

5+App开发 HelloH5 mui

app开发包含课程html,css,html5,css3,js,ui,mui,h5+,csatapp.js,php,mysql,混合开发app
react native app开发课程,HTML5,CSS3,Javascript,ECMAscript6,React+React Native,php,mysql,React Native课程vip班
今天是优惠活动哦加赠送课程 有意者加qq2971611409,tel:17090057793
进入教室

继续阅读 »

app开发包含课程html,css,html5,css3,js,ui,mui,h5+,csatapp.js,php,mysql,混合开发app
react native app开发课程,HTML5,CSS3,Javascript,ECMAscript6,React+React Native,php,mysql,React Native课程vip班
今天是优惠活动哦加赠送课程 有意者加qq2971611409,tel:17090057793
进入教室

收起阅读 »

解决边改边看模式下web浏览器不显示内容的问题

HBuilder版本: 7.4.1
问题:在WindowsXP下是正常的,换到win8.1(64位)后,在边改边看模式下Web浏览器无法显示内容,此外也缺少内置的一些浏览器宽高设置参数。
解决方法如下:在边改边看模式下,将web浏览器窗口放大,在其顶部的输入框中输入当前正在编辑的html页面的完整地址即可。只需要输入当前页面的地址,打开其他页面的时候就可以自动识别显示。
完整的地址格式:
http://127.0.0.1:8020/XXX/html/query_bill.html
其中XXX为具体的项目名称,之后的页面地址是在该项目下的相对地址。

继续阅读 »

HBuilder版本: 7.4.1
问题:在WindowsXP下是正常的,换到win8.1(64位)后,在边改边看模式下Web浏览器无法显示内容,此外也缺少内置的一些浏览器宽高设置参数。
解决方法如下:在边改边看模式下,将web浏览器窗口放大,在其顶部的输入框中输入当前正在编辑的html页面的完整地址即可。只需要输入当前页面的地址,打开其他页面的时候就可以自动识别显示。
完整的地址格式:
http://127.0.0.1:8020/XXX/html/query_bill.html
其中XXX为具体的项目名称,之后的页面地址是在该项目下的相对地址。

收起阅读 »

关于IOS触发click事件无法接收payload的解决办法

纠结了一个下午才搞定的一个问题,闲话不多说给大家分享一下
推送工具:个推
个推的透传消息模版有一个参数:payload,这个参数就是在触发click事件传输的值。
template.setPushInfo(actionLocKey, badge, message, sound, payload, locKey, locArgs, launchImage);模版可以从个推文档查到

receive的值不用改还用:transContent的标准格式写法
监听接收的方法:
switch(msg.type){
case "click":
receiveMsg = msg.payload.payload;
break;
case "receive":
receiveMsg = msg.payload;
break;
}

希望这能够节省一下大家的时间,有不同的方法的同学,可以留言指教!

继续阅读 »

纠结了一个下午才搞定的一个问题,闲话不多说给大家分享一下
推送工具:个推
个推的透传消息模版有一个参数:payload,这个参数就是在触发click事件传输的值。
template.setPushInfo(actionLocKey, badge, message, sound, payload, locKey, locArgs, launchImage);模版可以从个推文档查到

receive的值不用改还用:transContent的标准格式写法
监听接收的方法:
switch(msg.type){
case "click":
receiveMsg = msg.payload.payload;
break;
case "receive":
receiveMsg = msg.payload;
break;
}

希望这能够节省一下大家的时间,有不同的方法的同学,可以留言指教!

收起阅读 »

dclouder 连接蓝牙

Android 蓝牙

搞了很久,终于搞出来的,但是还不是很友好,目前,js不能开启多线程,只能 一次取完了数据,就关闭socket,下次再取数据,的时候,
在开启socket 获取完了,关闭;不能一直开着socket ,不然会阻塞当前主线程,什么也干不了,有没有大神指导这种情况如何处理,怎样才能,一直开着socket ,不停地解析传过来的包,不阻塞主线程呢,我是使用dclouder连接了蓝牙设备,蓝牙发信号,然后手机接收 数据,

先是搜索:
console.log("search::isOpen="+isOpen);
if(isOpen==true) return;
main = plus.android.runtimeMainActivity();
var IntentFilter = plus.android.importClass('android.content.IntentFilter');
var BluetoothDevice = plus.android.importClass("android.bluetooth.BluetoothDevice");
console.log("开始搜索设备");
var filter = new IntentFilter();
// var bdevice = new BluetoothDevice();
var BleDevice = new BluetoothDevice();
disableBtn(true);
BAdapter.startDiscovery(); //开启搜索
var receiver;
receiver = plus.android.implements('io.dcloud.android.content.BroadcastReceiver', {
onReceive: function(context, intent) { //实现onReceiver回调函数
plus.android.importClass(intent); //通过intent实例引入intent类,方便以后的‘.’操作
if(intent.getAction() == "android.bluetooth.adapter.action.DISCOVERY_FINISHED") {
main.unregisterReceiver(receiver); //取消监听
disableBtn(false);
plus.nativeUI.toast("搜索结束");
console.log("搜索结束");
} else {
BleDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
if(BleDevice==null){main.unregisterReceiver(receiver); //取消监听
disableBtn(false); return;}
var name=BleDevice.getAddress()+BleDevice.getName();
if(bleArray.indexOf(name)==-1){
bleArray.push(name);
addNode(table,BleDevice.getAddress(),BleDevice.getName());
}//开始判断
var lastBLE = localStorage.getItem('lastBLE');
console.log("lastBLE::"+lastBLE);
if(lastBLE!=null&&lastBLE==BleDevice.getAddress()){
main.unregisterReceiver(receiver); //取消监听
disableBtn(false);
ConnectEqu(lastBLE);
}

                }  
            }  
        });   
        filter.addAction(BleDevice.ACTION_FOUND);  
        filter.addAction(BAdapter.ACTION_DISCOVERY_STARTED);  
        filter.addAction(BAdapter.ACTION_DISCOVERY_FINISHED);  
        filter.addAction(BAdapter.ACTION_STATE_CHANGED);  
        main.registerReceiver(receiver, filter); //注册监听   

搜索完了,开始连接蓝牙:

main = plus.android.runtimeMainActivity();  
        BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter");  
        UUID = plus.android.importClass("java.util.UUID");  
        uuid = UUID.fromString(FETUS_UUID);  
        BAdapter = BluetoothAdapter.getDefaultAdapter();  
        device = BAdapter.getRemoteDevice(mac_address);  
        plus.android.importClass(device);  
        bluetoothSocket=null;  
        bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid);  
        plus.android.importClass(bluetoothSocket);  
        if(!bluetoothSocket.isConnected()) {       
            bluetoothSocket.connect();  
        }             
       if(bluetoothSocket.isConnected()) {   
        isOpen=true;  
        console.log("search::isOpen="+isOpen);  
        console.log('设备已连接'); //连接成功做标记,下次直接连接  

// localStorage.setItem('lastBLE',mac_address);
// var lastBLE =localStorage.getItem('lastBLE');
// console.log("lastBLE::"+lastBLE);
var inputStream = bluetoothSocket.getInputStream();
plus.android.importClass(inputStream);
var msg =null;
try{
var msg ;//= br.readLine();
while(isOpen){
var msg=inputStream.read();
console.log(msg);
parseData(msg);
}
// }
//地址:http://ask.dcloud.net.cn/question/60
}catch(err){
console.log("异常"+err);
}
}

附件是完整的代码:

继续阅读 »

搞了很久,终于搞出来的,但是还不是很友好,目前,js不能开启多线程,只能 一次取完了数据,就关闭socket,下次再取数据,的时候,
在开启socket 获取完了,关闭;不能一直开着socket ,不然会阻塞当前主线程,什么也干不了,有没有大神指导这种情况如何处理,怎样才能,一直开着socket ,不停地解析传过来的包,不阻塞主线程呢,我是使用dclouder连接了蓝牙设备,蓝牙发信号,然后手机接收 数据,

先是搜索:
console.log("search::isOpen="+isOpen);
if(isOpen==true) return;
main = plus.android.runtimeMainActivity();
var IntentFilter = plus.android.importClass('android.content.IntentFilter');
var BluetoothDevice = plus.android.importClass("android.bluetooth.BluetoothDevice");
console.log("开始搜索设备");
var filter = new IntentFilter();
// var bdevice = new BluetoothDevice();
var BleDevice = new BluetoothDevice();
disableBtn(true);
BAdapter.startDiscovery(); //开启搜索
var receiver;
receiver = plus.android.implements('io.dcloud.android.content.BroadcastReceiver', {
onReceive: function(context, intent) { //实现onReceiver回调函数
plus.android.importClass(intent); //通过intent实例引入intent类,方便以后的‘.’操作
if(intent.getAction() == "android.bluetooth.adapter.action.DISCOVERY_FINISHED") {
main.unregisterReceiver(receiver); //取消监听
disableBtn(false);
plus.nativeUI.toast("搜索结束");
console.log("搜索结束");
} else {
BleDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
if(BleDevice==null){main.unregisterReceiver(receiver); //取消监听
disableBtn(false); return;}
var name=BleDevice.getAddress()+BleDevice.getName();
if(bleArray.indexOf(name)==-1){
bleArray.push(name);
addNode(table,BleDevice.getAddress(),BleDevice.getName());
}//开始判断
var lastBLE = localStorage.getItem('lastBLE');
console.log("lastBLE::"+lastBLE);
if(lastBLE!=null&&lastBLE==BleDevice.getAddress()){
main.unregisterReceiver(receiver); //取消监听
disableBtn(false);
ConnectEqu(lastBLE);
}

                }  
            }  
        });   
        filter.addAction(BleDevice.ACTION_FOUND);  
        filter.addAction(BAdapter.ACTION_DISCOVERY_STARTED);  
        filter.addAction(BAdapter.ACTION_DISCOVERY_FINISHED);  
        filter.addAction(BAdapter.ACTION_STATE_CHANGED);  
        main.registerReceiver(receiver, filter); //注册监听   

搜索完了,开始连接蓝牙:

main = plus.android.runtimeMainActivity();  
        BluetoothAdapter = plus.android.importClass("android.bluetooth.BluetoothAdapter");  
        UUID = plus.android.importClass("java.util.UUID");  
        uuid = UUID.fromString(FETUS_UUID);  
        BAdapter = BluetoothAdapter.getDefaultAdapter();  
        device = BAdapter.getRemoteDevice(mac_address);  
        plus.android.importClass(device);  
        bluetoothSocket=null;  
        bluetoothSocket = device.createInsecureRfcommSocketToServiceRecord(uuid);  
        plus.android.importClass(bluetoothSocket);  
        if(!bluetoothSocket.isConnected()) {       
            bluetoothSocket.connect();  
        }             
       if(bluetoothSocket.isConnected()) {   
        isOpen=true;  
        console.log("search::isOpen="+isOpen);  
        console.log('设备已连接'); //连接成功做标记,下次直接连接  

// localStorage.setItem('lastBLE',mac_address);
// var lastBLE =localStorage.getItem('lastBLE');
// console.log("lastBLE::"+lastBLE);
var inputStream = bluetoothSocket.getInputStream();
plus.android.importClass(inputStream);
var msg =null;
try{
var msg ;//= br.readLine();
while(isOpen){
var msg=inputStream.read();
console.log(msg);
parseData(msg);
}
// }
//地址:http://ask.dcloud.net.cn/question/60
}catch(err){
console.log("异常"+err);
}
}

附件是完整的代码:

收起阅读 »