Android 这个词已强占我们的眼球有一段时间了。在此之前,提到 Android ,没人会和移动互联网以及 Google 这两个当今最火辣的词联系起来。然而,自从 Google 推出自己的移动操作系统 Android 以来, Android 、 Google 和移动互联网就好像 10 年前的 Windows 、微软和 PC 操作系统一样,成为了当今最吸引眼球的组合。
说到 Android ,现在一点都不会引起歧义,她就是 Google 最值得骄傲的移动操作系统。虽然 Android 并不是第一个智能手机操作系统,当然,也不会是最后一个智能手机操作系统。但她却仅在出生不到两年时间里成为了有望超越一切的移动操作系统。甚至在美国 2010 年第 2 季度的 Android 手机销量已经超越被认为是销售之王的 IPhone 。成为了当今销量增长最快的系统。取得这些成绩,当然, Android 取得今天这些成绩除了出身名门外,还有就是 Android 的免费开源。任何人、任何组织都可以免费使用 Android ,而无需付给 Google 一分钱。由于这些好处,使用支持 Android 的手机厂商越来越多。甚至被誉为“山寨之王”的联发科也在研制支持 Android 的芯片,如果成功, Android 手机的价格有望降到 1000 元以下,如果大多数 Android 手机真到了这个价格,那将会成为 Android 的另一个杀手锏。
Android 除了其客观的优势外,主要面向移动互联网也是 Android 成功的一个主要因素。大笔者写作本文时, Android 的最新版本是 2.2 。经过试用,感觉 Android 2.2 的浏览器速度较以前的版本有了非常大的提高 ,Android 2.2 的浏览器被称为世界上最快的移动浏览顺口 。在 Android 2.2 中还加入了新的 Just-In-Time(JIT) 技术,使用在 Android 2.2 中运行的程序的运行速度较以前的版本快了 2.5 倍。
Android
的浏览器速度的提升也会为我们的应用程序提供更多的选择
.
传统的
Android
应用程序的
UI
都由
Android
组件来实现。而我们有了更快的浏览器,可以将在
PC
领域风起云涌的
AJAX
与移动浏览器结合来向用户展现更绚丽的界面。说起
AJAX
,可能从事
Web
开发的程序员并不会陌生。在最近几年国内外也出现了很多流行的
AJAX
框架。其中
Ext JS
就是其中的佼佼者。
Ext JS
主要用于设计
Web
界面,其中大量使用了
JavaScript
和
Ext JS
技术,但使用起来却很容易。例如,
Ext JS
可以很容易地模拟
Windows XP
的界面,当然,这个界面是基于
Web
的。在《人人都玩开心网:
Ext JS +
Android + SSH
整合开发
web
与移动
SNS
》一书中通篇来完成一个利用
Ext JS
技术实现的
SNS
系统,界面就模仿了
Windows XP
的风格,见图
1
所示。

如果本文的读者是开发人员,那么就需要使用 Android SDK 的 WebView 组件来显示我们需要的内容。在《人人都玩开心网: Ext JS + Android + SSH 整合开发 web 与移动 SNS 》一书中除了提供了提供了一个完整的基于 Web 版的 SNS ,还开发了一个基于 Android 的 SNS 。在这个 Android 版的 SNS 中,利用了 WebView 组件来显示服务端返回的 HTML 格式的内容。当然,如果读者也可以向其中嵌入 AJAX 、 Ext JS 等高级特性。
Android
的
WebView
固然强大,不过很多时候还要依赖于
Android
组件。这些组件的常规的使用方法这里就不必说了,而在这些组件中还有很多比较有趣的使用方法。例如,使用过
QQ for Android
的开发人员可能会发现,在输入聊天记录时,可以直接将表情图像放到
EditText
组件中(如图
3
所示)。也许会多初学者会感觉实现这个功能比较困难,但实际上实现这个功能再简单不过了。
p.MsoNormal, li.MsoNormal, div.MsoNormal { margin: 0cm 0cm 0.0001pt; text-align: justify; font-size: 10.5pt; font-family: "Calibri","sans-serif"; }.MsoChpDefault { font-size: 10pt; }div.WordSection1 { page: WordSection1; }
我们一般通过
EditText
的
setText
方法来设置
EditText
中的文本,例如如下的代码向
EditText
添加了一个字符串。
Edittext.setText(“测试数据”);
p.MsoNormal, li.MsoNormal, div.MsoNormal { margin: 0cm 0cm 0.0001pt; text-align: justify; font-size: 10.5pt; font-family: "Calibri","sans-serif"; }.MsoChpDefault { font-size: 10pt; }div.WordSection1 { page: WordSection1; }
我们只需要对上面的代码稍微做一下手脚,就可以实现将图像插入到 EditText 中的目的。如果读者看过《 Android/OPhone 开发完全讲义》,会发现书中在很多情况下使用了文本标记(类似于 HTML 语言的标签,但只包含了十分有限的 HTML 语言的功能)。在这些标记中有一个 <img> 标记。通过这个标记,可以很容易地实现将图像插入到 EditText 的功能。不过使用 <img> 标签要比使用其他的标签多一个步骤,这就是要实现一个 ImageGetter 接口,通过这个接口,可以获得一个 Drawable 对象。先看看如下的代码:
{
@Override
public Drawable getDrawable(String source)
{
int id = Integer.parseInt(source);
Drawable d = getResources().getDrawable(id);
d
.setBounds( 0 , 0 , d.getIntrinsicWidth(), d
.getIntrinsicHeight());
return d;
}
};
p.MsoNormal, li.MsoNormal, div.MsoNormal { margin: 0cm 0cm 0.0001pt; text-align: justify; font-size: 10.5pt; font-family: "Calibri","sans-serif"; }.MsoChpDefault { font-size: 10pt; }div.WordSection1 { page: WordSection1; }
上面的代码通过 ImageGetter 接口的 getDrawable 方法返回了一个 Drawable 对象,其中 source 参数的值就是 <img> 标签的 src 属性的值。我们需要通过如下的代码来使用 <img> 标签。
editText.append(Html.fromHtml("<img src='"
+ faces[new Random().nextInt(6)] + "'/>", imageGetter, null));
其中 faces 是一个 int 类型数组,保存了相应的 drawable 资源的 ID 值。在使用 <img> 标签之前需要使用 Html.fromHtml 方法来封装这些标签,如果使用的是 <img> 标签,需要使用 fromHtml 方法的第 2 个参数指定 ImageGetter 对象,以便通过 <img> 标签的 src 属性获得相应的 Drawable 对象。通过 EditText.append 方法插入 <img> 标签后,系统会自动将 <img> 标签转换成相应的图像显示在 EditText 中。下面来看看我们的成果(如图 4 所示)。

p.MsoNormal, li.MsoNormal, div.MsoNormal { margin: 0cm 0cm 0.0001pt; text-align: justify; font-size: 10.5pt; font-family: "Calibri","sans-serif"; }.MsoChpDefault { font-size: 10pt; }div.WordSection1 { page: WordSection1; }
在本文向读者展示了 Android 中的浏览器、 Ext JS 、 EditText 图文混排的功能,读者从中也看到了 Android 中的缤纷世界。其实 Android 的功能还远不只这些。那么剩下的就留给读者来挖掘吧。
本文介绍了Android平台上的开发技巧,包括利用Android 2.2版本的浏览器性能提升进行Web应用开发,结合ExtJS技术实现丰富的用户界面,并展示了如何在EditText组件中插入图片等实用技巧。
1220

被折叠的 条评论
为什么被折叠?



