1.创建Activity
1.新建一个类,然后继承(android.app.Activity)Activity类。
2.在这个类中重写必要的生命周期方法,onCreate()通常都需要重写,而且在重写之后的onCreate()中加载布局文件setContentView().
3.在项目清单文件配置自己的Activity。
<application>
<activity
android:name="com.example.activity1.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>
<activity android:name="自己activity的名称(包名+类名)" ></activity>
</application>
注意:如果新建的Activity没有在项目清单文件中配置会有如下异常
android.content.ActivityNotFoundException: Unable to find explicit activity class
为布局文件中的按钮添加单击事件:
1.通过内部类的方式
package com.click369.activitydemo1;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Button button=null;
//在本Activity第一次被执行的时候调用
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在activity中显示布局的
setContentView(R.layout.activity_main);
button=(Button)this.findViewById(R.id.open_test_activty_button);
button.setOnClickListener(new MyClick());
}
public class MyClick implements OnClickListener{
@Override
public void onClick(View arg0) {
//创建意图对象
Intent intent=new Intent();
//setClass(packageContext, cls) 参数1---本类的对象
// 参数2---目标类的对象
intent.setClass(MainActivity.this, TestActivity.class);
//发送意图
startActivity(intent);
}
}
}
2.通过匿名内部类的方式
package com.click369.activitydemo1;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Button button=null;
//在本Activity第一次被执行的时候调用
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在activity中显示布局的
setContentView(R.layout.activity_main);
button=(Button)this.findViewById(R.id.open_test_activty_button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent=new Intent();
intent.setClass(MainActivity.this, TestActivity.class);
startActivity(intent);
}
});
}
}
3.通过在布局文件中位按钮设置单击事件
<Button
android:id="@+id/open_test_activty_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="打开TestActivity"
* android:onClick="openActivity" *
/>
package com.click369.activitydemo1;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends Activity {
//在本Activity第一次被执行的时候调用
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在activity中显示布局的
setContentView(R.layout.activity_main);
}
/**
* 按钮的单击事件
* @param view
*/
public void openActivity(View view){
Intent intent = new Intent();
intent.setClass(this, TestActivity.class);
startActivity(intent);
}
}
2.Activity的存储结构
在一个Android应用程序中会出现多个Activity,所以你打开的Activiyt就要在内存中存储。
Activity的存储结构是一种栈类型的存储结构。
栈类型的存储结构的特点是先进后出。
在Activity中是否使用了 finish(),如果出现表示当前的Activity被销毁了,所占内存被释放。
点击返回按钮会调用当前Activity的finish()。
那一个Activyt的对象在Activity的存储栈中的最顶端,那么手机屏幕上就是显示的是Activyt的对象。
3.Activity的生命周期
Activity的7个生命周期方法
protected void onCreate(Bundle icicle); 第一次创建的时候
protected void onStart(); 当Activity中的内容可见的时候
protected void onRestart(); 停止状态的Activity重新可见的时候
protected void onResume(); 当Activity中的内容获得焦点(可操作)的时候
protected void onPause(); 非全屏的Activity覆盖原来的Activity的时候,导致原来的Activity处于暂停状态了。
protected void onStop(); 全屏的Activity覆盖原来的Activity的时候,先是执行onPause()然后onStop()被执行了,导致原来的Activity处于停止状态了
protected void onDestroy(); 当Activity被销毁的时候
在系统中的Activity被一个Activity栈所管理。当一个新的Activity启动时,将被放置到栈顶,成为运行中的Activity,前一个Activity保留在栈中,不再放到前台,直到新的Activity退出为止。
1.在屏幕的前台(Activity栈顶),叫做活动状态或者运行状态(active or running)
2.如果一个Activity被另外的Activity完全覆盖掉,叫做停止状态(Stopped)。当系统内存不足的时候,Stopped(停止状态)的Activity有可能将被杀掉。
3.如果一个Activity失去焦点,但是依然可见(一个新的非全屏的Activity 或者一个透明的Activity 被放置在栈顶),叫做暂停状态(Paused)。当系统内存不足的时候,暂停状态(Paused)的Activity有可能将被杀掉。
4.系统从内存中将Activity所占用的内存释放(删除),Activity死亡状态。
Activity开始---onCreate---onStart---onResume---运行状态 (第一次打开)
运行状态---onPause()---onStop()---停止状态 (按Home/新打开一个Activity全屏覆盖)
停止状态---onRestart()---onStart()---onResume()---运行状态(重新打开/结束新打开的全屏覆盖Activity)
运行状态---onPause()---onStop()---onDestroy()---死亡状态 (按Back键)
死亡状态---onCreate---onStart---onResume---运行状态 (从头在运行)
运行状态---onPause()---暂停状态 (新打开一个Activity非全屏覆盖/新打开一个透明的Activity)
暂停状态---onResume()---运行状态 (关闭非全屏覆盖Activity/透明的Activity/让暂停的Activity重新获得焦点)
横竖屏切换的时候是先将原来的Activity杀死,然后在从头执行一次。
将Activity设置成对话框
将下面的代码添加到项目清单文件中需要被设的Activity
android:theme="@android:style/Theme.Dialog"