Activity是andriod系统下的展示View容器,每个Activity提供一个可视化的区域。它也是用户界面与系统交互的接口,类似于HTML中的Tag语言,也类似于net中的winform界面。作为一个容器其有两个方面:1)外界如何调用这个容器,也就是这个容器的对外接口和生命周期 2)对内的属性或者方法如何影响内部的组件或者控件。
从设计的角度来讲。Activity是一个通用的容器。类似于Flex中的View,对于前段的界面容器,肯定少不了鼠标事件、布局、生命周期和其它界面的交互和数据的相互传递。从通用性的角度来讲,须要将内容和逻辑分开。类似于aspx、mxml等。
设计模式上肯定会实现组合模式、观察者模式等。
Android能够包括多个Activity,可是同一时间内仅仅能有一个Activity激活。其它的Activity都处于非激活状态。应用程序仅仅能具有一个入口的MainActivity。Actity的包括例如以下的状态:
1)执行状态
2)暂停状态
3)停止状态
4) 销毁状态
Activity的事件包括例如以下几个:
1)onCreate()
2) onStart()
3) onPause()
4) onResume()
5) onStop()
6) onRestart()
7) onDestroy()
Activity继承自 ContextThemeWrapper,实现例如以下接口LayoutInflater.Factory2,Window.Callback,KeyEvent.Callback,View.OnCreateContextMenuListener,ComponentCallbacks2。可以实现布局、监听事件。主题更换等功能。
Activity的创建:
1)创建Activity类,并实现OnCreate() 方法:
public class MainActivity extends Activity
{
private TextView testMessage ;//声明文本框
private Button testButton ;//声明button
//声明事件
private Button.OnClickListener calcBMI = new Button.OnClickListener(){
@Override
public void onClick(View
arg0) {
// TODO Auto-generated
method stub
testMessage .setText("change" );
}
};
//button加入监听事件
private void SetListeners(){
testButton .setOnClickListener(calcBMI );
}
@Override
protected void onCreate(Bundle
savedInstanceState) {
super .onCreate(savedInstanceState);
//设置启动Activity
setContentView(R.layout. activity_main );
//获取控件
this .FindViews();
//设置监听
this .SetListeners();
}
private void FindViews(){
this .testMessage =(TextView) this.findViewById(R.id. testMessage );
this .testButton =(Button) this.findViewById(R.id. button1 );
testMessage .setText("ss" );
}
@Override
public boolean onCreateOptionsMenu(Menu
menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu. main , menu);
return true ;
}
}
以上的方法,创建了TextView、Button两个控件,同一时候也设置了Buttonbutton的事件,点击的时候更改TextBox的显示内容。
2)声明Activity对象,声明内容必需要设置在AndroidManifest.XML中。
<application
android:allowBackup="true"
android:icon=" @drawable /ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.andriodresearch.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
3)在layout中设置控件布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
//设置TextView
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" android:id="@+id/testMessage" />
//设置Button
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/testMessage"
android:layout_marginTop="32dp"
android:layout_toRightOf="@+id/testMessage"
android:text="change" />
</RelativeLayout>
至此,一个完整的Activity实例完毕,下一节将探讨Activity的跳转内容,同一时候尽量的从设计的思路探讨这样做解决的问题和优点。