21
2011

实现类似Android Grid效果的列表视图

ios里的UITableView,功能是很强大的。但是没有Android类似Grid的效果。比如类似解决ListView滚动卡的问题。因为UITableView的每行只支持显示一个视图。如果细粒度的比如类似gallery的效果,就需要自己解决了。

最近写的一个类似效果的原型:

imageimage

主要解决了:

  • 如何生成grid的样式
  • 图片的阴影效果

Continue Reading »

31
2011

中国水系Android第一个版本

写这个例子的目的是供同事和开发Android的朋友学习借鉴。

这个版本不是凭空冒出来的,就像爱因斯坦做手工的故事(不知道的见这里)一样,还有更丑的“小凳子”,它们是:

参考它们可以了解版本的演进过程。可能降低学习曲线。

这个版本的首页:

imageimage

点击条目,会弹出带图片的详细信息界面:

imageimage

这里的图片是从维基百科直接下载的,并会缓存在本地。

另外,就是对横竖屏使用了不同的布局:

imageimage

Continue Reading »

29
2011

android 1.6下使用Loader示例

android 3.0 sdk,引入了很多新api,比如Loader。和Fragment类似(编写兼容android1.6的fragment),该api也可在android 1.6以上版本执行。

以下介绍如何编写Loader,实现对ListView的异步加载。效果如图:

imageimage

示例中有一个后台线程每隔3秒更新数据库的长江记录,将记录改为“长江”或“Long River”。ListView无需监控数据库变化,基于Loader,会自动更新。实际上这里面是观察者模式,无非是系统自带了,只需调用即可,无需自己构造观察者。

这个示例也是完整的sqlite+content provider+cursor adapter+listview+loader组合示例。

Continue Reading »

28
2011

在视图显示中使用Theme

在视图显示中使用Style中,使用的是针对一个视图指定元素的样式。如果要针对整个Activity,对它的背景颜色和字体等做统一的样式约定,就需要使用另外一个技术,theme。

以下示例就是在在视图显示中使用Style基础上增加了theme。

image

Continue Reading »

28
2011

在视图显示中使用Style

如果视图界面风格需要统一的规划,就需要使用android视图技术中的style。这类似HTML技术和CSS技术的关系。

示例改编自简单使用SimpleCursorAdapter。示例截图如下:

image

Continue Reading »

28
2011

简单使用SimpleCursorAdapter

如果使用Sqlite,建议和ContentProvider结合使用。这样数据库的生命周期就不用自己管了。然后,如果要在比如ListView中显示,可以使用CursorAdapter。简化的办法是使用子类SimpleCursorAdapter。

以下就介绍一下使用sqlite+content provider+cursor adapter的最简单实现示例。太简单了,示例如图:

image

Continue Reading »

25
2011

编写兼容android1.6的fragment

通过声明方式在Android 3.0上使用Fragment中写的例子只能用在android3.0以上的版本。之前也测试过兼容1.6的方式,见编写最简单的Fragment。现在修改了android3.0的示例,可以兼容1.6版本了。

image

这是在nexus one 2.3.3下的截屏。项目本身使用的sdk是1.6。

Continue Reading »

25
2011

编写简单的AppleScript脚本

Mac环境下有一个强大的自然语言脚本工具,AppleScript。用它能干什么?

看看我写的简单脚本:

say "Marshal is a programmer. You can visit his blog"

tell application "Google Chrome"
    set URL of active tab of window 1 to "http://marshal.easymorse.com"
    activate
end tell

运行脚本,系统会先朗读第一行。随后打开google chrome浏览器,将当前的tab页面加载为我的博客首页。如果没有启动google chrome,则启动并创建新的tab。

PDF    发送文章为PDF   
24
2011

通过声明方式在Android 3.0上使用Fragment

编写最简单的Fragment中使用的环境是1.6到2.3的。为了比较正式的学习一下Fragment的使用,在Android 3.0平板模拟器上开发了一个示例:

image

使用Fragment可以有两种方式,即:

  • 通过布局xml文件,将fragment声明到布局里,这样fragment生命周期和Activity是绑定的
  • 通过编程方式,自己可以灵活处理在Activity内的fragment生命周期,缺点是可能因为复杂的生命周期管理带来不可预期的效果,比如[cref 4096]示例

Continue Reading »

15
2011

Android布局优化的要点

以下翻译自《Professional Android 2 Application Development》第四章Create user interfaces的Optimizing Layouts部分。

通过inflate在Activity中布局是个有性能消耗的过程。每增加一个嵌套的布局和视图都会对应用的性能造成很大的影响。

总之,好的实践是尽量保持布局尽可能简单,尤其是要避免嵌套inflate操作整个新的布局,这是为更新已经存在布局的小变化。

以下几点是包含在Android最佳实践指导原则里的,当然并不绝对:

  • 避免不必要的嵌套:不要把一个布局放置在其他布局里,除非是必要的。
  • 避免使用太多视图:在一个布局中每增加一个新的视图,都会在inflate操作时耗时和消耗资源。任何时候都不要在一个布局中包含超过80个视图,否则,消耗在inflate操作上的时间会很大。
  • 避免深度嵌套:布局可以任意嵌套,这极易于创建复杂和深度嵌套的布局层次。如果没有硬性限制,将嵌套限制在10层以下是好的实践。

优化布局层次,比如减少没效率的或者不必要的嵌套布局,是十分重要的。

Android SDK包含了layoutopt,一个命令行工具,来辅助这个优化工作。运行该命令,参数是布局文件或者布局文件的目录,将分析并给出改善的建议。

創建PDF格式    发送文章为PDF   
第8页,共88页« 前...45678910111213...后 »