随着移动端设备越来越多, 微信应用号即将发布, 越来越多的页面需要被移动浏览器承载, HTML5开发大热, 我们需要掌握Web开发的技能来适应时代变化.

合适的WebApp框架

AndroidUI4Web是一个高性能的WebApp框架, 在移动浏览器上有与原生App一致的体验.
对Android开发者们来说, 更重要的是:
框架移植自Android, 开发方式和API调用与Android开发保持一致, Android们可以低成本快速上手开发.

框架优点

  1. 流畅度. 框架使用Web Canvas渲染页面, 能有接近60fps的流畅度.
  2. 原生级别体验. 页面过渡动画, 滚动回弹, 点击响应等等细节都是原生级别的体验.
  3. 稳定. 所有UI组件都是移植自Android, 组件内部逻辑与原生Android的一致, 稳定度也一致.
  4. 易用. 对Android开发者可以超低成本上手开发.
  5. 开发者社区. 所有API文档用法和问题等都可以从Android社区找到.

Sample App

在线Sample地址: http://linfaxin.com/AndroidUI4Web/sample/main.html
预览:

高性能的原因:Canvas

Android中的视图是通过Android的Canvas对象渲染的, AndroidUI4Web框架接管Android的视图层, 所有渲染最终由Web Canvas实现.
主流的Web开发是DOM开发, 而DOM节点的性能是公认的慢的, 其他框架不能胜任一个复杂的WebApp开发.
参考

与Android开发相似

整个WebApp的开发流程与AndroidApp基本一致

HTML语法布局:

1
2
3
4
5
6
<FrameLayout>
<TextView
android:text="Hello world"
android:gravity="center"
></TextView>
</FrameLayout>

TypeScript代码:

1
2
3
4
5
6
7
8
9
10
11
module my.app {
import Activity = android.app.Activity; export class MainActivity extends Activity{ protected onCreate(savedInstanceState?:android.os.Bundle):void {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_main);
}
}
}

开始开发

Note: 代码使用TypeScript书写, 风格和语法与Java相似, 就算没有接触过TypeScript, 可以很快上手: http://www.typescriptlang.org/Handbook

准备环境

  1. 下载IDE: 支持Typescript的IDE或者编辑器. (推荐使用WebStorm)
  2. 安装Node.js: https://nodejs.org/
  3. 安装Typescript: npm install -g typescript
  4. 安装Babel转码器: npm install -g babel-cli
  5. 下载打开Hello World工程: 下载地址
  6. 如果使用WebStorm, 打开工程后, 需要在设置中开启TypeScript编译以获得更好代码提示和错误检查:
    Preferences -> Languages & Frameworks -> TypeScript: 1.Enable TypeScript Compiler. 2.use tsconfig.json

Hello World工程一览

目录/文件说明:

  1. app.html
    App入口页面, 可以修改’title’标签为你的App名字, ‘android-ui’标签里定义activity为App的入口Activity

  2. androidui-sdk
    AndroidUI框架存放的目录, 如果框架版本有更新, 需要升级替换其中的文件.

  3. build
    存放最终构建生成的js文件.

  4. res & gen
    res文件夹放图片,布局等资源, 在构建时会生成R文件在gen目录, 在代码引用R文件调用资源

  5. src
    代码的存放目录

查看WebApp

需要先起一个本地服务器, 然后打开app.html文件的地址.
如果使用WebStorm, 可以直接对app.html文件右键->Open In Browser 就可以查看.
打开页面后, 需要打开浏览器的开发者模式和手机模拟器, 具体参考这里

布局代码

与Android工程一致, 布局文件存放在res/layout文件夹, 目前仅支持’.html’后缀的布局文件.
布局代码内容与Android工程一致, 如HelloWorld工程中的activity_main.html文件:

1
2
3
4
5
6
<FrameLayout>
<TextView
android:text="Hello world"
android:gravity="center"
></TextView>
</FrameLayout>

需要注意的是目前不支持self-closing, 如上例中的TextView不能写成:

1
2
3
4
5
6
<FrameLayout>
<TextView
android:text="Hello world"
android:gravity="center"
/>
</FrameLayout>

另外layout_width和layout_height属性不是必须项, 如果没有定义则以父节点的默认定义为准. 参考ViewGroup.generateDefaultLayoutParams

如果新增了布局文件, 需要先手动执行build脚本, 才可以在代码中以 R.layout.xxx 方式引用到这个布局:

1
./build.sh

TypeScript代码

代码存放在src目录, 使用TypeScript书写, 代码风格和语法和Java较为接近, 可以很快上手并书写代码.
框架的API和Android的一致, 上手TypeScript后, 就可以立马开始使用框架了.

需要注意的一些事项是:

  1. Java中可以省略this调用方法和属性, 但TypeScript中必须带上. 如: this.setContentView(…)
  2. 一个类不能有多个同名的方法
  3. 其他常见的Java开发开始写JavaScript会遇到的问题.

修改代码后必须手动执行build脚本:

1
./build.sh

然后刷新浏览器看到最新结果.

开发效率

WebStorm + TypeScript 使得代码提示和错误检查十分友好, 代码书写的效率不会低于目前Android开发.
布局开发暂无属性提示补全和错误属性检查, 建议先在AndroidStudio里写好复制过来. 后期会以WebStorm插件方式提供支持.
在Chrome开发台的调试和断点能力比原生开发体验更优, 界面和代码的调试都比原生Android开发更友好.
界面调试:

实时查看View属性:

代码调试:

移动端的性能

IOS端稳定在50fps+, 全程原生级别的流畅度.
Android端Chrome浏览器根据机子性能在40-50fps左右.
Android4.x系统WebView:30fps左右. 不过国内主流机型都是定制过的系统(小米系统等), 默认浏览器内核已是较新版本, 能有40-50fps.

打包成App发布

目前可以使用Cordova(PhoneGap)打包方案, 同时建议Android端打包进CrossWalk内核保证4.x系统的流畅度.

进入调试

在’android-ui’标签加上debug属性, 所有Android视图节点都会以DOM节点的形式输出到’android-ui’标签里, 可以看到每个节点的大小位置.
Chrome开发台里选中对应节点后, 可以在节点的Properties里看到DOM节点的字段值, 所有Android节点的信息都在AndroidView字段里.

转战WebApp: 最适合Android开发者的WebApp框架的更多相关文章

  1. C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped 转 VC中进程与进程之间共享内存 .net环境下跨进程、高频率读写数据 使用C#开发Android应用之WebApp 分布式事务之消息补偿解决方案

    C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped 转 节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing). ...

  2. Android开发者必备的42个链接

    http://mobile.51cto.com/ahot-426035.htm Android开发者必备的42个链接 下面收集了42个帮助大家学习Android的内容链接,部分内容是面向初学者的,帮助 ...

  3. 每个Android开发者都应该了解的资源列表

    前言   这是一篇译文,原文地址Resources every Android developer must know,在译文开头,推荐两篇同样适合于Android开发者阅读的资源列表Android开 ...

  4. [转] Android开发者必备的42个链接

    下面收集了42个帮助大家学习Android的内容链接,部分内容是面向初学者的,帮助大家从头开始学习Android开发,其他则面向较高级的开发者.希望推荐的这些内容对你有帮助. 官方网站 1.谷歌And ...

  5. 每个Android开发者必须知道的资源集锦

    英文原文:Resources every Android developer must know 随着 Android 平台持续惊人的增长,越来越多的开发人员开始工作于 Android 应用程序.而且 ...

  6. 定制Android开发者专属T恤

    之前在T社上买了一件定制的T恤,感觉质量挺不错的,那是段子张发起的众筹.正面有hello google这几个字母. 我自己本身是一个Android粉,从nexus手机到pixel手机,坚持买原生的操作 ...

  7. 【工利其器】必会工具之(二)Android开发者官网篇

    前言 当刚开始踏入Android程序员这个行业的时候,想必绝大多数的人都和笔者一样,热血沸腾,激情四射,买了很多讲解Android开发的书籍.当开发某个功能需要学习某方面知识的时候,大家又成了“面向百 ...

  8. 写给Android开发者的Kotlin入门

    写给Android开发者的Kotlin入门 转 https://www.jianshu.com/p/bb53cba6c8f4 Google在今年的IO大会上宣布,将Android开发的官方语言更换为K ...

  9. Android开发者选项——Gpu呈现模式分析

    对于Android用户来说,无论你用的什么品牌的手机,在开发者选项中都能发现“玄学曲线”的开关,之所以称其为玄学曲线,还是因为它被很多网友用于测试一个说不清道不明的东西——流畅度.到底多流畅才叫流畅, ...

随机推荐

  1. 2016022613 - redis连接命令集合

    redis连接命令 1.ping 用途:检查服务器是否正在运行 返回数据pong,表示服务器在运行. 2.quit 用途:关掉当前服务器连接 3.auth password 用途:服务器验证密码 没有 ...

  2. CocoaPods ADD private Spec Repo

    Private Pods CocoaPods is a great tool not only for adding open source code to your project, but als ...

  3. 计算机视觉的matlab工具箱及MVG等

    MATLAB Functions for Multiple View Geometry Peter Kovesi's Matlab functions for Computer Vision Jean ...

  4. NET Core+Code First+Docker

    NET Core+Code First+Docker背景介绍 本文将会示范如何在Windows系统下基于ASP.NET Core构建跨平台服务,并通过Docker容器运行发布. 首先说一下为什么选择这 ...

  5. 常用machine learning数据集

    ImageNet:非商业化的可视化大数据 截止到2015年5月1日,ImageNet数据库拥有超过1500万的图像. cifar10:10类物体识别数据集 数据集中包含60,000幅32*32图像,共 ...

  6. JAVA抽象类和接口的深入探讨

    Java 语言中,抽象类(abstract class) 和接口(interface) 是抽象思想的两种体现形式.初学者很容易把这两者搞混,所以Java面试中考抽象类和接口的区别的面试题也常有出现的. ...

  7. Spring MVC 解读——@Autowired(转)

    转自:http://my.oschina.net/HeliosFly/blog/203902 Spring MVC 解读——@Autowired 一.@Autowired 作为一个Spring开发者对 ...

  8. Google Map API 学习六

    今天其实收货很大的 1.new google.maps.Circle 就是如何在地图上标注一个圆 3.getAnimation 在这里是通过获取Marker是否存在动作,然后如果存在动作的话,就将动作 ...

  9. Xmanager连接CentOS的远程桌面

    本文主要介绍通过Xmanager连接CentOS远程桌面时,在CentOS系统上需要做的一些配置. 1. Xmanager简介 Xmanager是一个运行于 Windows平台上的高性能的X Serv ...

  10. Connection 和Dispose的学习日志