Leon's blog

每天活的有趣一点

正在浏览标签为 android 的文章

都说手机的辐射大, 到底有多大我也不清楚.
不过我晚上睡觉前, 有在手机上浏览微博的习惯, 完了就把手机放在枕头底下.

由于看到了条微博说手机在枕边辐射非常严重, 心里就不舒服了, 最近晚上看完微博后, 就经常把手机关掉.

不过Android使手机的启动速度实在太慢了, 通常没有个5~10分钟, 根本别想启动完毕.
而且每次启动, 系统要重新搜索SD卡上的媒体文件, 这个操作非常耗电, 通常我10~20%的电量就这么没了.

不过手机在飞行模式和正常模式间切换的速度很快, 瞬间就完成. 我在微博问了下, 想知道手机的辐射是不是主要来自手机网络, 进入飞行模式是不是就没辐射了.
估计应该是关掉以后, 辐射小很多. 飞行模式只是对手机网络有用, 对wifi没有效果, wifi还是要自己手动开关的. wifi的辐射飞行模式估计管不了.

然后, 我又找了个app, Auto On-Off (FREE), 来自动切换飞行模式. 现在我把手机 21:00~09:00 自动设置成飞行模式, 这下睡觉安心多了.

Auto On-Off (FREE)

当mobl遇上新浪微博

抢沙发

1.mobl上的twitter trends例子

mobl上关于twitter trends的这个例子,还是蛮好玩的。通过调用twitter的API,得到当下twitter上流行的话题。然后再根据每个话题,显示出最近这个话题的tweets。


2.mobl上的twitter trends例子

照猫画虎,来试试做一个新浪微博的类似应用。查了一下微博的API,遗憾的发现关于话题的API还都处于beta状态。而且要用户登录以后才能调用,不像twitter在不登录的情况下就能调用trends类的API。
新浪微博只有Search类的API有不登录调用的API,我们就拿search模拟一下吧。
继续阅读

1.PhoneGap是干什么的?

PhoneGap同样也是多平台手机开发工具,它能把你的web应用打包成各各手机平台的本地应用。
打包iPhone应用需要Mac系统,还需要Apple的开发执照。我都没有,只能望洋兴叹了。
打包Android应用没有这些先决条件,咱们就试试这个吧。

2.准备mobl应用

还是拿小小计算器程序为例,mobl项目编译出来的结果在项目下的www目录里。
我们进入这个目录,把TipCalculator.html改名成index.html
然后把整个www目录通过压缩工具打包成zip格式。
准备工作就完成了。
继续阅读

美化mobl应用界面

抢沙发

1.派生mobl界面模块

接着上次我的的”小小计算器”程序。为了修改它的界面风格,我们首先派生一个mobl的模块。
新建一个叫ui.mobl的文件,在里面输入下面两行代码。第一句的意思是新建的模块名叫ui,第二句的意思是ui模块导入所有mobl::ui::generic的内容(开始我还以为mixin是中文迷信的拼音呢!搞了半天是mix in。唉英文差害死人)。

module ui
mixin mobl::ui::generic

回到tipcalculator.mobl文件,现在可以把里面引用mobl::ui::generic的那句改成引用ui了。

//import mobl::ui::generic
import ui

2.使用从mobl::ui::generic导入的变量

OK,准备功能完毕。现在在ui.mobl里就可以使用或者重写mobl::ui::generic里定义的变量了。
比如mobl::ui::generic里的样式变量(样式变量都是以$开头的)$baseColor,它代表了当前界面的基础色。另外里面还定义了$baseColor,$baseColorGreen,$baseColorRed, $baseColorRedish等颜色。
为了修改当前界面的基础色,只要输入下面一句,界面基础色就变成红的了。

style $baseColor = $baseColoRed

当然我们也可以使用mobl::ui::generic里的rgb函数,比如这样整个界面就变成灰的了。这里有关于具体模块内功能的描述,但是似乎文档还不太全面。

style $baseColor = rgb(100, 100, 100)

3.使用自定义css样式表

我们也可以定义新的样式变量,语法是css的扩展,据说是借鉴了scss的很多特性。
下面定义了两个新的样式变量,相信用过css的应该都能看懂。
但是有一点我没明白,为什么这些变量不再以$开头了呢?而且我换成$还编译不通过。

style mixin myButtonStyleMixin($fromColor, $toColor) {
  border: 1px solid #000;
  padding: 10px;
  line-height: 3em;
  margin: 5px;
  borderRadiusMixin(5px);
  backgroundGradientMixin($fromColor, $toColor);
}

style myButtonStyle {
  myButtonStyleMixin(#ddd, #bbb);
}

style myButtonPushedStyle {
  myButtonStyleMixin(#aaa, #999);
}

现在再打开tipcalculator.mobl文件,把里面的按钮使用我们新定义的样式变量。代码如下,效果见后面的图。

		button(_("Click me"), style=myButtonStyle,
                   pushedStyle=myButtonPushedStyle, onclick={
		  alert(_("You clicked me!"));
		})

运行效果可以看这里.

mobl是什么

mobl 是一个套手机应用开发工具(有自己界面描述语言+编译工具,提供基于Eclilpse的IDE)。完全基于标准web技术(Html+Css+javascript),可以快速开发手机应用程序,跨平台,支持包括 iOS、Android 和其他支持 HTML5 技术的手机。

优势

  • 适合各种支持html5和javascript手机平台
  • 开发就是基于web技术,对平台相关的知识需求很少,入手快

劣势

  • 不能完全访问移动设备的很多本地特性
  • 没有native的app好用,好看

helloworld

从这里下载mobl的开发工具以后。通过Eclipse自动生成一个”mobl project”项目,保存一个简单的应用程序就完成了。生成的代码如下:

application hellomobl

import mobl::ui::generic

screen root() {
	header("Hello world")
}

界面效果是这样的,实际使用效果可以用手机或者支持html5的浏览器直接访问这个页面

小小计算器

这是一个简单的计算器应用。输入是一个数字和一个百分数,输出是这两个数字乘出来的结果。所有的代码如下:

application TipCalculator

import ui

screen root() {
	var amount     =  20  //定义两个变量
  	var percentage =  10

  	header("Tip calculator") //标题
  	group {
	    item { numField(amount, label="amount") } //把变量amount与数字输入控件绑定
	    item { numField(percentage, label="percentage") } //把变量percentage与数字输入控件绑定
	    item { "$" label(amount * (1 + percentage/100)) } //根据这两个变量,计算,通过标签控件输出
	}	
}

界面效果是这样的,实际使用效果可以用手机或者支持html5的浏览器直接访问这个页面

碰到的问题

  • 现在做出来的就是个web应用,如何包装成本地应用,如何发布到app store?
  • 中文支持有些问题,在IDE中输入中文会导致编译不通过.但是只是在IDE环境中,直接编辑.mobl文件,通过命令行编译器编译没有问题.

后记

总体来看,使用mobl开发简单的应用速度非常快,语法很简洁。其他的还不太清楚,日后再看。
我不懂移动开发,但是发现mobl还是挺好玩的。欢迎熟悉移动开发的朋友多指正。