Android 学习笔记杂记
程序员文章站
2024-03-13 15:29:39
...
1.android:layout_width="fills_parent" //页面组件的宽度,与父容器宽度相同,后来与match_parent等同
android:layout_height="wrap_content" //页面组件的高度,取决于它的内容
2.所有Activity都必须在AndroidManifest.xml文件中进行注册才能生效,这个清单文件详细地说明了该应用地名称、所使用图标以及包含组件、所在包等。是整个Androis应用地全局描述文件
在application标签内通过activity标签填入注册信息:
使用android:name来指定具体注册哪一个活动如com.example.activitytest包下的FirstActivity活动,所以值为.FirstActivity
最外层的标签manifest就已经指定了包名了;
android:label可以指定活动中的标题栏的内容,显示在活动的最顶部,还会在运行的时候成为启动器(Launcher)中应用程序显示的名称
之后的<intent-filter>标签添加的
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
表示如果想让FirstActivity作为我们这个程序的主活动,即点击桌面应用程序图标时首先打开就是这个活动,那么就一定要加入这两句声明
在<manifest.../>中添加<uses-permission.../>可以声明该应用自身所拥有的权限,所以所有的权限都位于Manifest.permission类中
如<uses-permission android:name="android.uses-permission.CALL_PHONE"/>声明该应用本身具有打电话的权限
在在<activity.../>中添加<uses-permission.../>可以声明该应用自身所需的权限
如<uses-permission android:name="android.uses-permission.SEND_SMS"/>声明该应用本身需要发信息的权限
3.Activity组件(子类)(需要继承Activity基类)理解成一个用户界面,里面包含了很多的View对象,
可以通过setContentView(layoutResID)设置布局,在setContentView的参数里面,会获取到一个View对象作为参数,如把layout文件下的first_layout就是View对象,然后会把这个View对象添加到一个ViewGroop(mContentParent)中。ViewGroup是View的一个子类,可以作为View来使用,即ViewGroup可以包含ViewGroup组件,也可包含View组件,由于ViewGroup类是抽象类,所以一般使用它的子类来作为容器类,例如各种布局管理器。ViewGroup有内部类LayoutParams提供了一些XML属性,如android:layout_height,android:layout_width,有三个值:match_parent,fill_parent和wrap_content
Service组件(需要继承于Service基类)也与Activity组件类似,区别是:Service组件通常运行在后台,一般不与用户交互,没有图形用户界面
4.创建UI布局的方式有两种,(体现MVC原则) 自己在Java里写代码或者通过XML定义布局,后者显得更加方便和容易理解! 也是我们最常用的手段!
如:在layout文件下定义first_layout.xml文件并进行编辑,然后在java代码中使用setContentView(R.layout.first_layout)来显示first_layout.xml的视图效果
由于一个Activity可以有多个相同或不性质的组件,所以使用id来区分它们,使用android:id可以做到(在XML文件中使用的id值是英文,然后在R文件中会自动在id类中加上一个button_1的变量并给它赋值),如定义一个id为"button_1"的Button组件,的id定义形式如:android:id="@+id/button_1",如果想在java文件中访问这个组件,可以通过
findViewById(R.id.button_1),访问id为button_1的按钮组件(注意,该函数返回的是一个View对象,而组件都是View的对象或者其子类的对象,所以需要向下转型),一旦获得组件后,就可以通过代码来控制各UI组件的外观行为了,如为UI组件绑定事件监听器等
控制UI组件的XML属性都有对应的方法:
如android:id 相关方法是setId(int)
5.一般使用XML文件控制变化小、行为比较固定的组件,而java代码控制变化较多、行为比较复杂的组件
6.所有的布局管理器如LinearLayout、TableLayout、FrameLayout、AbsoluteLayout、RelativeLayout都是ViewGroup的子类,addView(View child)在ViewGroup中实现,所以布局管理器可以使用addView方法向布局管理器所代表的布局添加其他组件
7.表格布局:TableLayout,是通过其他组件决定行和列的多少的下:
android:stretchColumns="1,2"(与数组相似)表示2,3列可以被拉伸(使组件填满指定列),还有被收缩:android:shrinkColomns,被隐藏:android:collapseColumn,先在表格布局中定义指定哪一列的行为,然后再在TableRow中对每一列增加组件。
而TableRow是向TableLayout表格布局中添加行的XML标签.
8.LinearLayout线性布局:控制各组件的对齐、排列关系,有XML属性:
android:gravity="bottom|center_vertical" ,各组件垂直居中处于屏幕中心对齐
android:orientation="vertical"垂直排列