android
android框架:
android开发四大重要组件: activity 、intent、service、Content Provider
文件目录分析:
src文件: 放置的是编写的源程序文件。
gen文件: 由Eclipse 的ADT插件自动生成的文件, 里面有一个 R.java文件,保存开发所需各种资源引用的ID 号,通过ID 即可访问资源。
androidxx: 有一个android.jar 的版本文件,即是引用的android类库文件。
assets文件: 用来存放原始格式的文件,如音频文件等二进制格式文件。此目录中的资源不能被R.java 文件引用。
res文件: 放置android程序的所有的图像、颜色、风格、主题界面布局和字符串等资源。在res 文件中放置的资源都在 R.java中自动生成对应的资源ID 号,通过对应的ID 号,即可访问到对应的资源。
res中的子目录: drawable-Xdpi 对应放置的是不同分辨率的png 图片,应用于程序的图标;
layout 子目录:放置的是与布局配置相关的XML文件,每个Activity 组件都有对应布局文件;
values子目录:里面有一个 strings.xml文件,保存相应的键值对,同时在 R.java 中生成对应的ID 号。
AndroidManifest.xml文件: 是整个android程序的界面配置文件。
android组件:
android应用程序由组件组成, 组件是可以被调用的基本功能模块。
Activity组件:是android程序的呈现层,显示可视化的用户界面,并接收与用户交互所产生的界面事件。
Service组件: 一般用于没有用户界面,但需要长时间在后台运行的应用。
BroadcastReceiver组件:是用来接受并响应广播消息的组件。
ContentProvider组件:是android系统提供的一种标准的数据共享机制,应用程序可以通过ContentProvider 访问其他应用程序的私有的数据。 私有数据可以是存储在文件系统中的文件,也可以是SQLite 数据库中的数据。
Activity 组件:
主要作用:Activity是用户和android应用程序 交互 的 可视化接口。一个Activity中可以有多个控件。可以把Activity看作控件的容器。
Activity 关注的是创建一个或多个给开发者放置UI并交互的窗口。
创建方法4个步骤:
1、一个Activity就是一个类,并且该类要继承 Activity。
2、需要覆写 onCreate() 方法,( 当Activity第一次运行时,就调用onCreate() 方法。
3、每一个Activity 都需要在AndroidManifest.xml 中配置。
4、在Activity中添加必要的控件。
在AndroidManifest.xml中注册Activity:
创建一对<Activity></Activity>,指定name和label 属性
添加控件:注意:View类是android所有控件的父类。在Activity 中添加控件,首先在 layout文件中的main.xml 中添加,同时可以为控件添加ID号:
格式 @+标识符――代表一个内部类,在R.java中自动生成。
/ +标识符――代表该类的某一常量即ID号。
Activity组件中获取控件:在引用 R.java 中的ID即可获取控件,使用
获取控件
findViewById(int id) Finds a view that was identified by the id attribute from the XML. |
为控件设置内容: setText( );
控件:widgets 小工具
View类是 widgets类的基类,而widgets 是创建各种用户接口(Button,TextView......)的父类。
TextViw: 应在布局文件中注册。
Button:
EditText:
RadioGroup: 多个只能选择一个时,用组来嵌套RadioButton,有纵向和横向布局
RadioButton
Toast:
menu: 创建menu不需在xml文件中注册,只需重写下面方法即可:
boolean | onCreateOptionsMenu(Menu menu) Initialize the contents of the Activity's standard options menu. |
根据传入的 menu,调用menu类的add方法添加按钮。
abstract MenuItem | add(int groupId, int itemId, int order, CharSequence title) Add a new item to the menu. |
多个Activity组件:
多个Activity组件之间存在跳转关系,即通过触发某一时间从一个Activity跳转到另外一个Activity。
一个Activity对象调用startActivity()方法,即可跳转到该参数绑定的另外一个Activity。 Intent对象实现两个对象跳转的绑定方法:
public Intent setClass (Context packageContext, Class<?> cls)
第一个参数为起始Activity, 第二个参数为目的Activity:
Intent intent = new Intent();
// access data
intent.putExtra("TestValue", "123");
// add a listener
intent.setClass(Activity02.this, OtherActivity.class);
// contact other activity
Activity02.this.startActivity(intent);
startActivity( Internt intent ) 方法
void | startActivity(Intent intent) Launch a new activity. |
Intent 的基本作用:
Intent是在整个应用程序之间传输数据使用的。 可以理解为一个有关请求的组件。
一个Intent对象包含了一组信息: Component name、 Action、 Data、 Category、 Extras、 Flags 等。
两个Activity之间的数据传输可以使用Intent对象的Extras属性:
Extras 存放着一对键值对,通过一系列的
Intent | putExtra(String name, double value) Add extended data to the intent. |
int | getIntExtra(String name, int defaultValue) Retrieve extended data from the intent. |
获取相对应的数据。
Activity的生命周期:
android应用程序中的Activity是以栈的形式保存的,多个Activity是以进栈或出栈保存在内存当中。
一个完整的Activity的生命周期经历7个周期,同时需要重写 7个方法。
public class Activity extends ApplicationContext {
protected void onCreate(Bundle savedInstanceState);
protected void onStart();
protected void onRestart();
protected void onResume();
protected void onPause();
protected void onStop();
protected void onDestroy();
}
onCreate( )方法:当第一次创建Activity时调用该方法,并调用该方法里面的常见的静态方法。这些静态方法一般是用来创建Views类等。(生成)
onStart()方法:当应用程序在屏幕中可视化时即调用该方法。(进栈)
onResume( )方法:当某个Activity位于屏幕的前景,并与用户交互时,调用该方法。(位于栈顶)
启动一个Activity都调用以上三个方法。
onPause( )方法:当别的Activity进栈即启动别的Activity,调用该方法来保存该Activity所用到的数据。
onStop( )方法:当完全启动另一个Activity即前一个Activity处于后台完全不可见时,调用该方法。(若只是部分遮挡,此时不会调用该方法)
onRestart( )方法:当一个Activity还保存在栈中,并需要重新启动时,即调用该方法。
onDestroy( )方法:销毁一个Activity时,调用该方法。(出栈)
Task 和 Activity:
一个应用程序有多个Activity,不同的Activity都有自己的生命周期。Task用来管理应用程序的Activity。
Task是以栈的形式管理Activity的。
Activity 风格:
默认为满屏。
对话框: 设置对话框风格Activity,只需在androidManifeset.xml文件注册的Activity添加风格的主题:
<activity android:theme= “@android:style/Theme.Dialog”/>
Activity布局:
Activity默认使用线性布局。当需要使用不同布局时,需要指定使用的布局文件。
默认:setContentView(R.layout.main );
void | setContentView(int layoutResID) Set the activity content from a layout resource. |
线性布局: LinearLayout有纵向和横向两个方向,并使用权重控制控件各自的大小比例:android:layout_weight
该权重不仅涉及控件的比例,还涉及控件的内容,内容较多的,所占位置较大
表格布局:TableLayout 表格布局里面有个子标签<TableRow/> 用来指定行,而列由具体的控件决定,一个控件占一列。
相对布局:RelativeLayout 相对布局就是各个控件之间的相对空间的安排。相对布局的属性值由ID和true/false指定。 各自的相对关系由ID号或者 true/ false 指定。