如何使用
qml开发安卓app?这里给一个轻量级的框架~
这个框架主要是以页面栈为主的框架。
http://v.youku.com/v_show/id_XMTMxMzUwNDgxMg==.html
https://github.com/GDPURJYFS/WellChat ---
2015.9.1
回家之后就没怎么线上更新,但是线下一直有进行研究,开学之后会进行更新。欢迎大家一起学习。
---
2015.9.13
修复了文字溢出。
---
2015.9.18
吐血大修复
修复了可选项大小的
问题。
修复了安卓上WebView加载本地html的问题。
修复了安卓上,输入框在底部,弹出键盘,顶部工具栏被顶出屏幕的问题。
修改了项目目录。
更新了 Sparrow 模块。
大家可以去看看这个麻雀模块,力图做到麻雀虽小五脏俱全。
https://github.com/GDPURJYFS/Sparrow修改了qml入口
文件的加载方式(放弃了使用QtObject来加载ApplicationWindow这种方式)
添加了可以隐藏
显示 topBar 和 bottomBar的动画。并提供了topBarArea,bottomBarArea,backgroundBarArea的接口。
2015/9/27
- 添加了心跳包。- 修复了 Keyboard ,添加了protected 的写函数。- 修复 UI.js 的字体大小- 修复了java调用c++native函数的方式。
2015/11/03
- 重构java代码
部分,修复包名为小写。
2015/11/19
- 重新制定了一个QtBridgingAndroid类(
C++和Java),用于Java和C++交互。
- 提供在Qt QML 中修改安卓状态栏的方法。
- 但是问题多多呢。。。例如将回到主页,再回到应用中,就无法保持上次设置的状态栏颜色。
2015/11/21
TODO 列表
- 重构预警,所谓重构,其实就是对Sparrow这个模块进行升级,还有一些
其他遗留的问题。
- 将图灵机器人植入其中。
- 预计年底完成它吧。不过估计是要拖到明年的一月了。
2015/12/29
QML 框架 重构完毕
无血可吐。
1. 删除了不必要的本地 html 文件。
没有使用到的
图片资源。减小 qrc 资源的大小(字体没减掉。。。)
2. 对于业务实现页面,使用qml单例来存储每个页面的url。(详细查看qml/WellChat/BussinessPage)
3. 对于应用的一些图片音乐等资源,使用qml单例来保存每个资源的 url。(详细查看)
4. 项目的主要结构并没有太大改动。
5. 使用了最新的Sparrow控件库。
https://github.com/GDPURJYFS/Sparrow/ 你可以从本次提交中学习一些东西,例如怎么在QML中写动画。
1. 确定要对谁实施动画。(target)。
2. 写状态,当 target 处于某状态时,其属性的值。
3. 写各个状态的过度。
4. 完善过度中的动画。
巴拉巴拉~或许今年就到这里为止了吧。
如果你从这个项目中学到了一些东西,你可以star或者推荐给别人学习哦~别忘记follow me~
---
2015/12/31
年终修复安卓修复键盘弹出
界面不友善问题。
更新查看
https://github.com/GDPURJYFS/WellChat/commit/8e3eb5ebcd0bd6fcffea0fce347028103f0cd20c 恩,修复了,演示视频的话。看这个吧
http://www.bilibili.com/video/av3485059/ ---
2016/1/20
TODO
现阶段的 Sparrow 的 QML 模块处于 1.0 阶段。在 1.1 阶段
支持沉浸式(安卓 5.0 及以上支持,IOS 默认支持)
需要对 Page 以及 PageStackWindow 控件重新设计。
支持沉浸式和全屏的切换
提供良好的输入框。
由于 Qt 在安卓上的输入框有些许问题,直到 Qt 官方解决 Qt 应用窗体大小调整时闪烁的问题。预计版本或许是 Qt 5.7 解决吧,毕竟 Qt 5.7 是在 2016 年 Q2 放出。
提供一个简易的 Qt3D 支持控件,Room3D 和 Page3D。
其中,Room3D 包含一个最简单的场景和摄像头,必要的灯光。 Page3D 提供普通的 QML 元素和 Qt3D::Entity 的交互,例如动画。等至 Qt 5.7 正式放出 Qt3D 的时候,就可以有更多的支持了。
将提供良好的 C++ 扩展模块,例如 I/O 设备,更强大的网络套件(Sparrow.Network)。
由于 QML 中的 XMLHttpRequest 不能很好的处理 Cookie,好吧,其实是根本不能处理,既不能接受来自服务器的 Cookie也不能设置 Cookie。所以将 Qt 的网络模块通过封装后,在 QML 中使用,Qt C++ 的网络模块本身是异步的,就不用担心阻塞 GUI 线程了。
另一个是将 QIODevice 及其子类进行封装,注册到 QML 中,这一个模块对 QML 的 GUI 线程是阻塞的,所以提供的功能会注意裁剪,毕竟这个模块是 Sparrow.Network 的附属模块。
提供更加良好的多线程及并发模块。
这一块要研究好久,就放到 Sparrow 2.0 模块吧。
预计下次更新本帖时间为开学季吧。。。。毕竟放假回家没有网络。