传智播客-Android(2)-页面布局和控制器Activity

这也是传说中的黎活明老师的课程,该课程网上有免费视频下载。之前提到的巴巴运动网项目就是黎活明老师一个人一手开发的(巴巴运动网在线首页),以前是传智播客的必授课程,现在改为Android开发课程,还是黎老师授课。Android开发课程视频因为考虑到学员就业竞争力和培训机构之间竞争力的问题,暂不对外公布,想学习Android 3G开发的话欢迎来传智播客亲自聆听,而且传智播客现在特别推出了为期一周的Android 3G项目课程。欢迎加入:)

 

页面布局
前文提到过,建完Android项目以后,工具自动生成的res/layout目录下是专门存放xml界面文件。在Android项目里,这个目录下的xml文件可以视为普通web项目里的html文件,主要用于用户界面显示。这个目录下可以不止这一个xml界面显示文件,默认main.xml文件为主界面,相当于web项目里的index.html文件,当然,这也可以更换。而不同的Activity可以共用一个xml显示界面,也可以有自己专有的界面,甚至可以在不同界面中跳转,就像html一样,不过这都是Activity的任务了。

 

Android项目刚建好以后会自动在该目录下生成一个main.xml文件:

http://schemas.android.com/apk/res/android
"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/itcast"
    />
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    />

 

该文件里:
1、LinearLayout指界面的整体布局模式为线性,里面通常会有其他一些组件,如TextView和EditView等,分别表示文本组件和编辑组件;
2、其中orientation="vertical"表示整体布局导向为垂直方向,即该界面内的其他组件总体说来是以自上而下的方式排列;
3、layout_width="fill_parent"和layout_height="fill_parent"表示显示窗口(严格说来应该是组件)宽高占据整个父窗口,如果是main.xml,父窗口可视为屏幕自身,如果是其他界面文件,父窗口则是他们依托的窗口,可能是屏幕自身,也可能是其他界面文件(譬如main.xml)显示。从下文可以看出,这两个选项还可以有其他的值--"wrap_content",表示该组件的宽高依其内容而定。
4、text="@string/hello"是指该组件的默认文本显示,@string/hello表示该默认文本值引用的是res/values下strings.xml里属性值为name的string元素的文本节点值。如果不用显示默认文本,text="@string/hello"可以删除。
5、布局里面可以嵌套布局,在LinearLayout里有另一个常用的布局是RelativeLayout,相对布局,顾名思义,该布局内的组件的位置是可以依据参照物设置的。但是被嵌套的布局对于上一层布局而言,也只是一个组件而已,换而言之,RelativeLayout里的组件对于LinearLayout来说只占一个组件的位置。
6、既然是参照,就需要有参照的标记,可以用android:id="@+id/setbutton"表示。这个表示给该组件添加了一个id属性,id值为setbutton。当然,需要的话,所有组件都可以添加这个标识,并不一定只能是RelativeLayout里的组件。
7、当然,还有其他很多诸如多选框,单选按钮子类的组件以及菜单子类的组件,及其属性等就不一一详述了,doc has everything。

 

示例界面:
http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
 http://schemas.android.com/apk/res/android
"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     >
        android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:textSize="20px"
      android:text="@string/name"
      android:id="@+id/nameLable"
      />
        android:layout_width="200px"
      android:layout_height="wrap_content"
      android:layout_toRightOf="@id/nameLable"
      android:layout_alignTop="@id/nameLable"
      android:id="@+id/name"
      />
 
 http://schemas.android.com/apk/res/android
"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     >
        android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:textSize="20px"
      android:text="@string/age"
      android:id="@+id/ageLable"
      />
        android:layout_width="200px"
      android:layout_height="wrap_content"
      android:layout_toRightOf="@id/ageLable"
      android:layout_alignTop="@id/ageLable"
      android:id="@+id/age"
      />
 
 http://schemas.android.com/apk/res/android
"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     >
     android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/save"
       android:id="@+id/savebutton"
   /> 
     android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="@string/set"
       android:layout_toRightOf="@id/savebutton"
       android:id="@+id/setbutton"
   /> 
 

 

控制器Activity
1、事实上,Android项目里的Activity即为MVC开发模式中的控制器C,就好比struts项目里面的action类。
2、既然是控制器,那就意味着,在严格遵循MVC开发模式的项目中,activity类里只负责届面数据的处理以及对后台业务类的调用,而具体的业务执行不应当在activity里出现。
3、Android项目刚建好以后会自动在该目录下生成一个main.xml文件:
public class HelloWorldActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
    }
}
onCreate是该activity类被调用时的入口,而setContentView相当于初始化运行这个activity的页面(卖个关子,想想“R.layout.main”是什么~~)

你可能感兴趣的:(传智播客)