今天花了不少时间在这4个View上面,但是重点并不是使用这几个View的结构有多难理解(毕竟照葫芦画瓢,谁都懂得做出来),而是理解这些View是如何显示出来,View与AndroidManifest.xml、R.java、和layout目录的xml之间的关系,它们是如何联系起来运行的,浪费了挺多时间来思考和适应。
先来整理一下我的思路:
4个文件分别为AndroidManifest.xml、Activity(src目录里的java文件)、R.java、layout目录中的xml文件。
1. 先由R.java谈起,R.java自动生成了layout目录下xml文件的ID,这些ID是为了方便系统调用。
2. Activity(java文件)只是简单地用了setContentView(R.layout.(xml文件))方法,把该xml的所有UI效果赋予了Activity(Java文件)[原来我就是这里转不过来,原来指定的是这个xml文件的id,这就等于是间接的调用了这个xml文件,现在明白了]。
3. 在AndroidManifest.xml中使用activity标签的android:name属性来指定了这个Activity(java文件)的路径(是哪个activity),也是为了方便调用这个View。
> 所以有关系:
Activity(Java文件)调用xml文件组建UI,然后AndroidManifest.xml调用Activity(Java文件)运行程序,显示在用户屏幕上。
总结今天所得:
一、4个布局类各自的特点。
二、4个布局类各自Xml代码特点。
三、LayoutInflater类。
四、LayoutParams类,生成对象的参数。
五、新认识的Activity对象的两个方法,addview()。
一、各自的特点:
> LinearLayout:该布局类将自己包含的子元素(组件)按照一个方向进行排行。通过Android:orientation属性控制所有子元素(组件)水平或竖直方向进行排列。
> FrameLayout:无法确定元素(组件)的位置,如果里面有多个元素(组件),豁免的元素将重叠在前一个元素上。
> RelativeLayout:是一个相对布局类,如果一个可视化组件B依赖于A,那么必须要让A出现在B的前面。
> TableLayout:表格布局类。
二、Xml代码特点:
<!--*************************************************LinearLayout布局***************************************************-->
<LinearLayout android:orientation="vertical">
</LinearLayout>
<!--*************************************************LinearLayout布局End************************************************-->
<!--*************************************************RelativeLayout布局***************************************************-->
<RelativeLayout
android:layout_width="fill_parent" android:layout_height="wrap_content">
<!—子元素(组件)可设属性:
Android:padding = “*px”
Android:margin = “*px”
Android:layout_below = “@id/label” :将当前组件放置于ID为label组件的下方。
Android:layout_alignParentRight = “true” :与父容器的右边齐平。
Android:layout_marginLeft = “*dip” :设置左边距为*dip。
Android:layout_toLeftOf = “@id/cancel” :设置此组件的ID为cancel组件的左边。
Android:layout_alignTop = “@id/cancel” :设置此组件和ID为cancel组件高度齐平。
-->
</RelativeLayout>
<!--*************************************************RelativeLayout布局end*******************************************-->
<!--*************************************************TableLayout布局***************************************************-->
<TableLayout
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:stretchColumns="1">
<TableRow android:gravity="right">
</TableRow>
<!—TableRow标签定义了表格布局里边的一行。每一行里边可以自由加入一些组件,如按钮和文本框等-->
</TableLayout>
<!--*************************************************TableLayout布局end***********************************************-->
三、LayoutInflater类:
初识LayoutInflater类,该类只能使用getSystemService(Content.LAYOUT_INFLATER_SERVICE)获得LayoutInflater对象,该对象可以对XML的布局文件进行解析,并生成View。调用inflate(R.layout.(xml文件ID)),生成View。
四、还有个LayoutParams类,生成对象的参数。
//*************************************************************************************************************************************
//Java代码
RelativeLayout.LayoutParams relParam = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
//生成布局对象的参数
//*************************************************************************************************************************************
五、新认识的Activity对象的两个方法:
addView(新的布局对象,高度,宽度) //在布局对象中加入新的布局对象,并指定高度和宽度。
addView(新的布局对象,LayoutParams对象) //在布局对象中加入新的布局对象,并设置布局对象的参数
写完总结还真是累啊,不知不觉写了那么久,今天总结的格式比较乱,原因是已经快#_#了!