四、Ophone程序代码分析
完成了第一个具有“实用价值”的程序是不是觉得有一些兴奋?还是有更多的疑问?如果你具备基本的编程基础,我相信你最陌生的莫过于“适应”了。ArrayAdapter是一个数组适配器,它可以将某种类型的数据数组(在这里是字符串数组)和列表相关联。这个列表在这里是称为spinner的控件,也可以是List形式的控件。作比喻如下:adapter好比是房产中介,字符串数组str好比是房东向中介提供的原始房源信息,中介可以将这些房源信息制成精美的图片广告单贴在玻璃门上,也可以用粉笔抄写在小黑板上,是玻璃门还是小黑板取决于函数setDropDownViewResource的参数。
下拉框的外观也有两种,android.R.layout.simple_spinner_item 和simple_spinner_ dropdown_item,有兴趣的读者可以在代码中轮流使用这两种spinner外观。
在本例中,我们使用了大量的LinearLayout,并且指定其上的控件为水平或者垂直分布。我们可以把Layout想象成一个托盘,所有的菜肴都放在这个托盘上,而LinearLayout只是其中一种形状的托盘。Layout用来控制控件在屏幕上的位置,并且能相互嵌套创建任意复杂的界面。下面是几种常见的Layout。
1、FrameLayout:最简单的Layout,FrameLayout将每一个控件显示在左上角。新增的控件将会覆盖掉前一个控件,把它们部分或全部挡住(除非它是透明的)。
2、LinearLayout:用来沿着某一个直线方向增加控件,其orientation属性包括垂直的和水平的。垂直的Layout每一行有一个控件;而水平的Layout每一列有一个控件。LinearLayout可以为每个控件指定“权重”,来控制在可获得的空间里每个控件的相对大小。
3、RelativeLayout:顾名思义,RelativeLayout用来定义每个控件相对于其他控件或屏幕边界的位置。例如,以右对齐、置于屏幕中央等形式来排列控件。
4、TableLayout:如果你具有设计制作网页的经验,TableLayout会给你带来似曾相识的感觉。它允许你按照网格的行列来放置控件。每格可以占据多个行和列,并且每列可以设定为缩小或增长。
5、AbsoluteLayout:在AbsoluteLayout里,每个控件的位置以绝对坐标进行定义。使用这个类,你可以为组件安排最精确的布局,但是它不能为不同的屏幕分辨率和方向进行动态调整。