Android学习札记(三)

Android学习笔记(三)

Creating User Interfaces

     整个第四章讲的是如何建立一个用户的应用界面。对于一个手机的程序来说,往往一个界面的好坏可以决定一个程序是否成功。但是也有例外,APNdroid就是一例。没有任何界面的这个小程序可以说是我手机上使用频率最高的一个程序了。
     从书上的分类来说,组成一个用户界面的有很多东西。其中有view,viewgroup还有Widget,忘了还有一个layout。但是他们都是一个view的子类。就好像java中的container的作用。
     在书中分别介绍了几个例子。我就例子来讲吧。 
     第一个是还是Todolist。想想这个的最终版本是否可以直接拿到market上面去卖呢?
        其实这个例子只是讲了如何通过xml文件来进行配置。同时提供了一个制作widget的范例。通过这个widget的范例。
        在这个范例中,作者制作了一个TodoListItemView的东西。完全通过拼装现有的widget,然后在xml里面配置其相关的属性。从这可以明白,其实widget只是一种特殊的view
        不过看到这里,我产生了一个问题。就是文件的管理问题。如果说我做了一个新的widget。是否会让在layout中的文件变得混乱?其实这估计是一直会有的问题吧。因为我试了一下。好像layout文件夹下面如果添加子文件夹会混乱不堪。
        还有一个就是inflate方法。这个方法是填充的意思。很形象。不过对于其中的参数,我不是很了解。至少是第三个参数为false的时候,有什么特别。我搞不清楚。

     第二个是画了个指南针。其实Market上面有一个叫做Compass的app,不知道之后是否会丰富这个应用呢?
         其实这个例子无非就是画图。了解了如何测量和画图
          OnMeasure方法。这个方法传入两个int参数。说句实话。对于两个参数我觉得很莫名,因为它是一个带有对象性质的原始数据。在通过MeasureSpec解析之后,能够得到两个信息。一个是Mode,另一个则是其对应的长和宽的大小。其中Mode分为两种。the maximum space available for the control (in the case of AT_MOST), or the exact size that your control will occupy (for EXACTLY)。关于这个我觉得有点莫名。为什么不把这些分装成对象?为了性能的原因?
         Ondraw方法:其实这个方法相对来说很简单。记住了Canvas是笔,然后Paint是一个封装了style,color等信息的类。说难也难。因为其中的方法和技巧太多,而且做出来的东西,有时候需要的则是那么一点灵感。

        事件处理:在这里。介绍的对于自己制作的widget使用的方法,就是重写对应的方法。但是我比较喜欢用监听器的方法。不过书中说了具体的在第11章介绍。这里也就不能说明白。

      Menu:
         菜单,Andorid的菜单无有3种。Icon menu,最基本的menu,就是按了menu健的出来的menu。The Expanded Menu。就是Icon menu放不下。按了More之后的 和submenu。之间的使用基本上书上写的很清楚。我也没必要重新写了。